Skip to content

Commit ef43114

Browse files
authored
Set size of DashedLine explicitly (#1772)
* Set size of DashedLine explicit to prevent infinite measuring (#1735) * Added lost disabled controls again (#1749) * Binding Height of DashedLine to Self.StrokeThickness (#1735) * Added BottomThicknessConverter, used for DashedLine to get StrokeThickness (#1735) * Added missing BottomThicknessConverter for TimePicker (#1735)
1 parent 1c24b4d commit ef43114

File tree

7 files changed

+53
-6
lines changed

7 files changed

+53
-6
lines changed

MainDemo.Wpf/Fields.xaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,12 @@
102102
Style="{StaticResource MaterialDesignFloatingHintTextBox}"
103103
FontSize="24" />
104104
</smtx:XamlDisplay>
105+
<smtx:XamlDisplay Key="fields_13" Grid.Row="4" Grid.Column="3">
106+
<TextBox materialDesign:HintAssist.Hint="I'm Disabled" IsEnabled="False" MinWidth="72" />
107+
</smtx:XamlDisplay>
108+
<smtx:XamlDisplay Key="fields_15" Grid.Row="5" Grid.Column="3">
109+
<PasswordBox Password="01234" IsEnabled="False" MinWidth="72" />
110+
</smtx:XamlDisplay>
105111

106112
<TextBlock Grid.Row="0" Grid.Column="4" Style="{StaticResource MaterialDesignHeadline5TextBlock}" Margin="32 0 0 0">Multi-line</TextBlock>
107113
<smtx:XamlDisplay Key="fields_3" Grid.Row="1" Grid.RowSpan="2" Grid.Column="4" Margin="32 0 0 0">
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
using System;
2+
using System.Globalization;
3+
using System.Windows;
4+
using System.Windows.Data;
5+
6+
namespace MaterialDesignThemes.Wpf.Converters
7+
{
8+
public class BottomThicknessConverter : IValueConverter
9+
{
10+
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
11+
{
12+
if (!(value is Thickness thickness))
13+
return Binding.DoNothing;
14+
15+
if (parameter == null)
16+
return thickness.Bottom;
17+
18+
return thickness.Bottom * System.Convert.ToDouble(parameter, CultureInfo.InvariantCulture);
19+
}
20+
21+
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
22+
=> throw new NotImplementedException();
23+
}
24+
}

MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.ComboBox.xaml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
<converters:TextFieldHintVisibilityConverter x:Key="TextFieldHintVisibilityConverter" IsNotEmptyValue="Collapsed" />
1313
<converters:MathConverter x:Key="MathAddConverter" Operation="Add" />
1414
<converters:MathConverter x:Key="DivisionMathConverter" Operation="Divide" />
15+
<converters:BottomThicknessConverter x:Key="BottomThicknessConverter" />
1516
<converters:BrushRoundConverter x:Key="BrushRoundConverter" />
1617
<converters:BooleanToVisibilityConverter x:Key="InverseBoolToVisConverter" TrueValue="Collapsed" FalseValue="Visible"/>
1718
<converters:TextFieldClearButtonVisibilityConverter x:Key="ClearTextConverter" />
@@ -486,10 +487,12 @@
486487
Grid.ColumnSpan="2"
487488
Grid.Column="0"
488489
VerticalAlignment="Bottom"
490+
Height="{Binding RelativeSource={RelativeSource Self}, Path=StrokeThickness}"
491+
Width="{Binding ActualWidth, ElementName=toggleButton}"
489492
Visibility="{Binding Path=IsEnabled, RelativeSource={RelativeSource Self}, Converter={StaticResource InverseBoolToVisConverter}}"
490493
Data="M 0,0 L 1,0"
491494
Stretch="Fill"
492-
StrokeThickness="{Binding BorderThickness.Bottom, ElementName=toggleButton, Converter={StaticResource DivisionMathConverter}, ConverterParameter=0.75}"
495+
StrokeThickness="{Binding BorderThickness, ElementName=toggleButton, Converter={StaticResource BottomThicknessConverter}, ConverterParameter=1.33}"
493496
StrokeDashArray="1,2.5"
494497
StrokeDashCap="Round"
495498
Stroke="{TemplateBinding BorderBrush}"
@@ -796,10 +799,12 @@
796799
Grid.ColumnSpan="2"
797800
Grid.Column="0"
798801
VerticalAlignment="Bottom"
802+
Height="{Binding RelativeSource={RelativeSource Self}, Path=StrokeThickness}"
803+
Width="{Binding ActualWidth, ElementName=toggleButton}"
799804
Visibility="{Binding Path=IsEnabled, RelativeSource={RelativeSource Self}, Converter={StaticResource InverseBoolToVisConverter}}"
800805
Data="M 0,0 L 1,0"
801806
Stretch="Fill"
802-
StrokeThickness="{Binding BorderThickness.Bottom, ElementName=toggleButton, Converter={StaticResource DivisionMathConverter}, ConverterParameter=0.75}"
807+
StrokeThickness="{Binding BorderThickness, ElementName=toggleButton, Converter={StaticResource BottomThicknessConverter}, ConverterParameter=1.33}"
803808
StrokeDashArray="1,2.5"
804809
StrokeDashCap="Round"
805810
Stroke="{TemplateBinding BorderBrush}"

MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.DatePicker.xaml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
<converters:TextFieldHintVisibilityConverter x:Key="TextFieldHintVisibilityConverter" />
1212
<converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
13+
<converters:BottomThicknessConverter x:Key="BottomThicknessConverter" />
1314
<converters:MathConverter Operation="Divide" x:Key="DivisionMathConverter" />
1415

1516
<Style x:Key="MaterialDesignDatePickerTextBox" TargetType="{x:Type DatePickerTextBox}">
@@ -148,10 +149,12 @@
148149
SnapsToDevicePixels="True" />
149150
<Path x:Name="DashedLine"
150151
VerticalAlignment="Bottom"
152+
Height="{Binding RelativeSource={RelativeSource Self}, Path=StrokeThickness}"
153+
Width="{Binding ActualWidth, ElementName=border}"
151154
Visibility="Collapsed"
152155
Stretch="Fill"
153156
Data="M 0,0 L 1,0"
154-
StrokeThickness="{Binding BorderThickness.Bottom, ElementName=border, Converter={StaticResource DivisionMathConverter}, ConverterParameter=0.75}"
157+
StrokeThickness="{Binding BorderThickness, ElementName=border, Converter={StaticResource BottomThicknessConverter}, ConverterParameter=1.33}"
155158
StrokeDashArray="1,2.5"
156159
StrokeDashCap="Round"
157160
Stroke="{TemplateBinding BorderBrush}"

MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.PasswordBox.xaml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
<converters:BooleanToVisibilityConverter x:Key="InverseBoolToVisConverter" TrueValue="Collapsed" FalseValue="Visible"/>
1111
<converters:MathConverter Operation="Divide" x:Key="DivisionMathConverter" />
12+
<converters:BottomThicknessConverter x:Key="BottomThicknessConverter" />
1213
<converters:TextFieldClearButtonVisibilityConverter x:Key="ClearTextConverter" />
1314
<converters:NotConverter x:Key="NotConverter" />
1415
<converters:FontSizeToHintOffsetConverter x:Key="FontSizeToHintOffsetConverter" />
@@ -154,10 +155,12 @@
154155
SnapsToDevicePixels="True" />
155156
<Path x:Name="DashedLine"
156157
VerticalAlignment="Bottom"
158+
Height="{Binding RelativeSource={RelativeSource Self}, Path=StrokeThickness}"
159+
Width="{Binding ActualWidth, ElementName=border}"
157160
Visibility="Collapsed"
158161
Stretch="Fill"
159162
Data="M 0,0 L 1,0"
160-
StrokeThickness="{Binding BorderThickness.Bottom, ElementName=border, Converter={StaticResource DivisionMathConverter}, ConverterParameter=0.75}"
163+
StrokeThickness="{Binding BorderThickness, ElementName=border, Converter={StaticResource BottomThicknessConverter}, ConverterParameter=1.33}"
161164
StrokeDashArray="1,2.5"
162165
StrokeDashCap="Round"
163166
Stroke="{TemplateBinding BorderBrush}"

MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.TextBox.xaml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
<converters:TextFieldHintVisibilityConverter x:Key="TextFieldHintVisibilityConverter" />
1111
<converters:MathConverter Operation="Divide" x:Key="DivisionMathConverter" />
12+
<converters:BottomThicknessConverter x:Key="BottomThicknessConverter" />
1213
<converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
1314
<converters:TextFieldClearButtonVisibilityConverter x:Key="ClearTextConverter" />
1415
<converters:NotConverter x:Key="NotConverter" />
@@ -162,9 +163,11 @@
162163
<Path x:Name="DashedLine"
163164
VerticalAlignment="Bottom"
164165
Visibility="Collapsed"
166+
Height="{Binding RelativeSource={RelativeSource Self}, Path=StrokeThickness}"
167+
Width="{Binding ActualWidth, ElementName=border}"
165168
Stretch="Fill"
166169
Data="M 0,0 L 1,0"
167-
StrokeThickness="{Binding BorderThickness.Bottom, ElementName=border, Converter={StaticResource DivisionMathConverter}, ConverterParameter=0.75}"
170+
StrokeThickness="{Binding BorderThickness, ElementName=border, Converter={StaticResource BottomThicknessConverter}, ConverterParameter=1.33}"
168171
StrokeDashArray="1,2.5"
169172
StrokeDashCap="Round"
170173
Stroke="{TemplateBinding BorderBrush}"

MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.TimePicker.xaml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
</ResourceDictionary.MergedDictionaries>
88
<converters:TextFieldHintVisibilityConverter x:Key="TextFieldHintVisibilityConverter" />
99
<converters:MathConverter Operation="Divide" x:Key="DivisionMathConverter" />
10+
<converters:BottomThicknessConverter x:Key="BottomThicknessConverter" />
1011

1112
<Style x:Key="MaterialDesignTimePicker" TargetType="{x:Type wpf:TimePicker}">
1213
<Setter Property="VerticalAlignment" Value="Center"/>
@@ -123,10 +124,12 @@
123124
</Border>
124125
<Path x:Name="DashedLine"
125126
VerticalAlignment="Bottom"
127+
Height="{Binding RelativeSource={RelativeSource Self}, Path=StrokeThickness}"
128+
Width="{Binding ActualWidth, ElementName=border}"
126129
Visibility="Collapsed"
127130
Stretch="Fill"
128131
Data="M 0,0 L 1,0"
129-
StrokeThickness="{Binding BorderThickness.Bottom, ElementName=border, Converter={StaticResource DivisionMathConverter}, ConverterParameter=0.75}"
132+
StrokeThickness="{Binding BorderThickness, ElementName=border, Converter={StaticResource BottomThicknessConverter}, ConverterParameter=1.33}"
130133
StrokeDashArray="1,2.5"
131134
StrokeDashCap="Round"
132135
Stroke="{TemplateBinding BorderBrush}"

0 commit comments

Comments
 (0)