Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions MainDemo.Wpf/Domain/SmartHintViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ internal class SmartHintViewModel : ViewModelBase
private string? _suffixText;
private double _selectedFontSize = double.NaN;
private FontFamily? _selectedFontFamily = DefaultFontFamily;
private bool? controlsEnabled = true;
private int _maxLength = 50;

public IEnumerable<FloatingHintHorizontalAlignment> HorizontalAlignmentOptions { get; } = Enum.GetValues(typeof(FloatingHintHorizontalAlignment)).OfType<FloatingHintHorizontalAlignment>();
public IEnumerable<double> FloatingScaleOptions { get; } = new[] {0.25, 0.5, 0.75, 1.0};
Expand Down Expand Up @@ -228,4 +230,22 @@ public FontFamily? SelectedFontFamily
OnPropertyChanged();
}
}

public bool? ControlsEnabled
{
get => controlsEnabled;
set => SetProperty(ref controlsEnabled, value);
}

public bool? ShowCharacterCounter
{
get => MaxLength > 0;
set => MaxLength = value == true ? 50 : 0;
}

public int MaxLength
{
get => _maxLength;
set => SetProperty(ref _maxLength, value);
}
}
2 changes: 1 addition & 1 deletion MainDemo.Wpf/Properties/launchSettings.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"profiles": {
"Demo App": {
"commandName": "Project",
"commandLineArgs": "-p Home -t Inherit -f LeftToRight"
"commandLineArgs": "-p \"Smart Hint\" -t Inherit -f LeftToRight"
}
}
}
203 changes: 201 additions & 2 deletions MainDemo.Wpf/SmartHint.xaml

Large diffs are not rendered by default.

12 changes: 11 additions & 1 deletion MaterialDesignThemes.Wpf/BottomDashedLineAdorner.cs
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,16 @@ public static void SetBrushOpacity(DependencyObject element, double value)
=> element.SetValue(BrushOpacityProperty, value);
#endregion

#region AttachedProperty : DashStyleProperty
public static readonly DependencyProperty DashStyleProperty
= DependencyProperty.RegisterAttached("DashStyle", typeof(DashStyle), typeof(BottomDashedLineAdorner), new PropertyMetadata(default(DashStyle)));

public static void SetDashStyle(DependencyObject element, DashStyle? value)
=> element.SetValue(DashStyleProperty, value);
public static DashStyle? GetDashStyle(DependencyObject element)
=> (DashStyle?) element.GetValue(DashStyleProperty);
#endregion

public BottomDashedLineAdorner(UIElement adornedElement) : base(adornedElement)
{
}
Expand All @@ -72,7 +82,7 @@ protected override void OnRender(DrawingContext drawingContext)

var pen = new Pen(lineBrush, lineThickness)
{
DashStyle = DashStyles.Dash,
DashStyle = GetDashStyle(AdornedElement) ?? DashStyles.Dash,
DashCap = PenLineCap.Round
};

Expand Down
2 changes: 2 additions & 0 deletions MaterialDesignThemes.Wpf/Constants.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ namespace MaterialDesignThemes.Wpf;
public static class Constants
{
public static readonly Thickness TextBoxDefaultPadding = new Thickness(0, 4, 0, 4);
public static readonly Thickness TextBoxDefaultPaddingNew = new Thickness(0, 8, 0, 4);
public static readonly Thickness FilledTextBoxDefaultPadding = new Thickness(16, 8, 12, 8);
public static readonly Thickness FilledTextBoxDefaultPaddingNew = new Thickness(16, 12, 12, 8);
public static readonly Thickness OutlinedTextBoxDefaultPadding = new Thickness(16, 16, 12, 16);
public static readonly Thickness DefaultTextBoxViewMargin = new Thickness(1, 0, 1, 0);
public static readonly Thickness DefaultTextBoxViewMarginEmbedded = new Thickness(0);
Expand Down
17 changes: 17 additions & 0 deletions MaterialDesignThemes.Wpf/Converters/BooleanToDashStyleConverter.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
using System.Globalization;
using System.Windows.Data;
using System.Windows.Media;

namespace MaterialDesignThemes.Wpf.Converters;

public class BooleanToDashStyleConverter : IValueConverter
{
public DashStyle? TrueValue { get; set; }
public DashStyle? FalseValue { get; set; }

public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture)
=> value is true ? TrueValue : FalseValue;

public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture)
=> throw new NotImplementedException();
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,15 @@ namespace MaterialDesignThemes.Wpf.Converters;

internal class TextFieldClearButtonVisibilityConverter : IMultiValueConverter
{
public Visibility ContentEmptyVisibility { get; set; } = Visibility.Hidden;

public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
if (!(bool)values[0]) // TextFieldAssist.HasClearButton
return Visibility.Collapsed;

return (bool)values[1] // Hint.IsContentNullOrEmpty
? Visibility.Hidden
? ContentEmptyVisibility
: Visibility.Visible;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ namespace MaterialDesignThemes.Wpf.Converters;

public class TextFieldPrefixTextVisibilityConverter : IMultiValueConverter
{
public Visibility HiddenState { get; set; } = Visibility.Hidden;

public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
string prefixText = (string)values[1];
Expand All @@ -14,7 +16,7 @@ public object Convert(object[] values, Type targetType, object parameter, Cultur
}

bool isHintInFloatingPosition = (bool)values[0];
return isHintInFloatingPosition ? Visibility.Visible : Visibility.Hidden;
return isHintInFloatingPosition ? Visibility.Visible : HiddenState;
}

public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) => throw new NotImplementedException();
Expand Down
14 changes: 14 additions & 0 deletions MaterialDesignThemes.Wpf/Converters/VerticalAlignmentConverter.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
using System.Globalization;
using System.Windows.Data;

namespace MaterialDesignThemes.Wpf.Converters;

public class VerticalAlignmentConverter : IValueConverter
{
public VerticalAlignment StretchReplacement { get; set; } = VerticalAlignment.Top;
public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture)
=> value is VerticalAlignment.Stretch ? StretchReplacement : value;

public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture)
=> throw new NotImplementedException();
}
12 changes: 0 additions & 12 deletions MaterialDesignThemes.Wpf/SmartHint.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using System.ComponentModel;
using System.Globalization;
using System.Windows.Data;
using MaterialDesignThemes.Wpf.Converters;

namespace MaterialDesignThemes.Wpf;
Expand Down Expand Up @@ -237,13 +235,3 @@ private void RefreshState(bool useTransitions)
}
}
}

public class VerticalAlignmentConverter : IValueConverter
{
public VerticalAlignment StretchReplacement { get; set; } = VerticalAlignment.Top;
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
=> value is VerticalAlignment.Stretch ? StretchReplacement : value;

public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
=> throw new NotImplementedException();
}
18 changes: 18 additions & 0 deletions MaterialDesignThemes.Wpf/SmartHintNew.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
using MaterialDesignThemes.Wpf.Converters;

namespace MaterialDesignThemes.Wpf;

/// <summary>
/// A control that implement placeholder behavior. Can work as a simple placeholder either as a floating hint, see <see cref="UseFloating"/> property.
/// <para/>
/// To set a target control you should set the HintProxy property. Use the <see cref="HintProxyFabricConverter.Instance"/> converter which converts a control into the IHintProxy interface.
/// </summary>
[TemplateVisualState(GroupName = ContentStatesGroupName, Name = HintRestingPositionName)]
[TemplateVisualState(GroupName = ContentStatesGroupName, Name = HintFloatingPositionName)]
public class SmartHintNew : SmartHint
{
static SmartHintNew()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(SmartHintNew), new FrameworkPropertyMetadata(typeof(SmartHintNew)));
}
}
1 change: 1 addition & 0 deletions MaterialDesignThemes.Wpf/Themes/Generic.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.TimePicker.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Shadows.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.SmartHint.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.SmartHintNew.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Snackbar.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.AutoSuggestBox.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.SplitButton.xaml" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Slider.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.TabControl.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.TextBox.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.TextBoxNew.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.TextBlock.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.TimePicker.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.ToggleButton.xaml" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Slider.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.TabControl.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.TextBox.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.TextBoxNew.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.TimePicker.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.ToolBar.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.ToolBarTray.xaml" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
<converters:ThicknessCloneConverter x:Key="DefaultOrFilledStyleTrailingIconPaddingConverterBottom"
AdditionalOffsetBottom="4"
CloneEdges="All" />
<wpf:VerticalAlignmentConverter x:Key="VerticalAlignmentConverter" />
<converters:VerticalAlignmentConverter x:Key="VerticalAlignmentConverter" />
<converters:NullableToVisibilityConverter x:Key="NullableToVisibilityConverter" />

<system:Double x:Key="PopupContentPresenterExtend">4</system:Double>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
AdditionalOffsetTop="12"
CloneEdges="Top,Right,Bottom"
FixedLeft="0" />
<wpf:VerticalAlignmentConverter x:Key="VerticalAlignmentConverter" />
<converters:VerticalAlignmentConverter x:Key="VerticalAlignmentConverter" />
<converters:NullableToVisibilityConverter x:Key="NullableToVisibilityConverter" />

<Style x:Key="MaterialDesignDatePickerTextBox" TargetType="{x:Type DatePickerTextBox}">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Slider.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.TabControl.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.TextBox.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.TextBoxNew.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.TextBlock.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.TimePicker.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.ToggleButton.xaml" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@
FixedBottom="-2" />


<wpf:VerticalAlignmentConverter x:Key="VerticalAlignmentConverter" />
<converters:VerticalAlignmentConverter x:Key="VerticalAlignmentConverter" />
<converters:NullableToVisibilityConverter x:Key="NullableToVisibilityConverter" />

<Style x:Key="MaterialDesignPasswordCharacterCounterTextBlock"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
<converters:FloatingHintTransformConverter x:Key="FloatingHintClippingGridTransformConverter" ApplyScaleTransform="False" />
<converters:FloatingHintTransformConverter x:Key="FloatingHintTransformConverter" ApplyTranslateTransform="False" />
<converters:FloatingHintTextBlockMarginConverter x:Key="FloatingHintTextBlockMarginConverter" />
<wpf:VerticalAlignmentConverter x:Key="VerticalAlignmentConverter" />
<converters:VerticalAlignmentConverter x:Key="VerticalAlignmentConverter" />
<system:Double x:Key="NoContentFloatingScale">1.0</system:Double>
<CubicEase x:Key="AnimationEasingFunction" EasingMode="EaseInOut" />

Expand Down
Loading