Skip to content

Commit e0ef525

Browse files
committed
Merge branch 'ValidationErrorTemplate' of https://github.com/l1pton17/MaterialDesignInXamlToolkit into l1pton17-ValidationErrorTemplate
2 parents 1e00779 + 64d4cac commit e0ef525

File tree

2 files changed

+37
-27
lines changed

2 files changed

+37
-27
lines changed

MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.ValidationErrorTemplate.xaml

Lines changed: 29 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
xmlns:wpf="clr-namespace:MaterialDesignThemes.Wpf"
44
xmlns:converters="clr-namespace:MaterialDesignThemes.Wpf.Converters">
55
<converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" TrueValue="Visible" FalseValue="Collapsed"/>
6-
6+
77
<ControlTemplate x:Key="MaterialDesignValidationErrorTemplate">
88
<ControlTemplate.Resources>
99
<DataTemplate DataType="{x:Type ValidationError}">
@@ -18,12 +18,10 @@
1818
</ControlTemplate.Resources>
1919
<StackPanel>
2020
<AdornedElementPlaceholder Name="Placeholder" />
21-
<Border Name="DefaultErrorViewerWrapper"
22-
Visibility="Collapsed">
23-
<Border Name="DefaultErrorViewer"
24-
Background="{DynamicResource MaterialDesignPaper}">
25-
<ContentPresenter Content="{Binding CurrentItem}" />
26-
</Border>
21+
<Border Name="DefaultErrorViewer"
22+
Visibility="Collapsed"
23+
Background="{DynamicResource MaterialDesignPaper}">
24+
<ContentPresenter Content="{Binding CurrentItem}" />
2725
</Border>
2826

2927
<wpf:CustomValidationPopup x:Name="ValidationPopup"
@@ -38,33 +36,45 @@
3836
<ControlTemplate.Triggers>
3937
<MultiDataTrigger>
4038
<MultiDataTrigger.Conditions>
41-
<Condition Binding="{Binding ElementName=Placeholder, Path=AdornedElement.(wpf:ValidationAssist.ShowOnFocus)}" Value="True"/>
39+
<Condition Binding="{Binding ElementName=Placeholder, Path=AdornedElement.(wpf:ValidationAssist.OnlyShowOnFocus)}" Value="False"/>
40+
<Condition Binding="{Binding ElementName=Placeholder, Path=AdornedElement.(wpf:ValidationAssist.UsePopup)}" Value="True"/>
41+
</MultiDataTrigger.Conditions>
42+
<MultiDataTrigger.Setters>
43+
<Setter TargetName="ValidationPopup" Property="IsOpen" Value="True"/>
44+
</MultiDataTrigger.Setters>
45+
</MultiDataTrigger>
46+
47+
<MultiDataTrigger>
48+
<MultiDataTrigger.Conditions>
49+
<Condition Binding="{Binding ElementName=Placeholder, Path=AdornedElement.(wpf:ValidationAssist.OnlyShowOnFocus)}" Value="False"/>
50+
<Condition Binding="{Binding ElementName=Placeholder, Path=AdornedElement.(wpf:ValidationAssist.UsePopup)}" Value="False"/>
51+
</MultiDataTrigger.Conditions>
52+
<MultiDataTrigger.Setters>
53+
<Setter TargetName="DefaultErrorViewer" Property="Visibility" Value="Visible"/>
54+
</MultiDataTrigger.Setters>
55+
</MultiDataTrigger>
56+
57+
<MultiDataTrigger>
58+
<MultiDataTrigger.Conditions>
59+
<Condition Binding="{Binding ElementName=Placeholder, Path=AdornedElement.(wpf:ValidationAssist.OnlyShowOnFocus)}" Value="True"/>
4260
<Condition Binding="{Binding ElementName=Placeholder, Path=AdornedElement.(wpf:ValidationAssist.UsePopup)}" Value="True"/>
4361
</MultiDataTrigger.Conditions>
4462
<MultiDataTrigger.Setters>
4563
<Setter TargetName="ValidationPopup" Property="IsOpen"
46-
Value="{Binding ElementName=Placeholder, Path=AdornedElement.IsKeyboardFocusWithin, Mode=OneWay}"/>
64+
Value="{Binding ElementName=Placeholder, Path=AdornedElement.IsKeyboardFocusWithin, Mode=OneWay}"/>
4765
</MultiDataTrigger.Setters>
4866
</MultiDataTrigger>
4967

5068
<MultiDataTrigger>
5169
<MultiDataTrigger.Conditions>
52-
<Condition Binding="{Binding ElementName=Placeholder, Path=AdornedElement.(wpf:ValidationAssist.ShowOnFocus)}" Value="True"/>
70+
<Condition Binding="{Binding ElementName=Placeholder, Path=AdornedElement.(wpf:ValidationAssist.OnlyShowOnFocus)}" Value="True"/>
5371
<Condition Binding="{Binding ElementName=Placeholder, Path=AdornedElement.(wpf:ValidationAssist.UsePopup)}" Value="False"/>
5472
</MultiDataTrigger.Conditions>
5573
<MultiDataTrigger.Setters>
5674
<Setter TargetName="DefaultErrorViewer" Property="Visibility"
57-
Value="{Binding ElementName=Placeholder, Path=AdornedElement.IsKeyboardFocusWithin, Mode=OneWay, Converter={StaticResource BooleanToVisibilityConverter}}"/>
75+
Value="{Binding ElementName=Placeholder, Path=AdornedElement.IsKeyboardFocusWithin, Mode=OneWay, Converter={StaticResource BooleanToVisibilityConverter}}"/>
5876
</MultiDataTrigger.Setters>
5977
</MultiDataTrigger>
60-
61-
<DataTrigger Binding="{Binding ElementName=Placeholder, Path=AdornedElement.(wpf:ValidationAssist.UsePopup)}" Value="True">
62-
<Setter TargetName="ValidationPopup" Property="IsOpen" Value="True"/>
63-
</DataTrigger>
64-
65-
<DataTrigger Binding="{Binding ElementName=Placeholder, Path=AdornedElement.(wpf:ValidationAssist.UsePopup)}" Value="False">
66-
<Setter TargetName="DefaultErrorViewerWrapper" Property="Visibility" Value="Visible"/>
67-
</DataTrigger>
6878
</ControlTemplate.Triggers>
6979
</ControlTemplate>
7080
</ResourceDictionary>

MaterialDesignThemes.Wpf/ValidationAssist.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,20 @@ public static class ValidationAssist
1414
/// <summary>
1515
/// The hint property
1616
/// </summary>
17-
public static readonly DependencyProperty ShowOnFocusProperty = DependencyProperty.RegisterAttached(
18-
"ShowOnFocus",
17+
public static readonly DependencyProperty OnlyShowOnFocusProperty = DependencyProperty.RegisterAttached(
18+
"OnlyShowOnFocus",
1919
typeof(bool),
2020
typeof(ValidationAssist),
2121
new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.Inherits));
2222

23-
public static bool GetShowOnFocus(DependencyObject element)
23+
public static bool GetOnlyShowOnFocus(DependencyObject element)
2424
{
25-
return (bool) element.GetValue(ShowOnFocusProperty);
25+
return (bool)element.GetValue(OnlyShowOnFocusProperty);
2626
}
2727

28-
public static void SetShowOnFocus(DependencyObject element, bool value)
28+
public static void SetOnlyShowOnFocus(DependencyObject element, bool value)
2929
{
30-
element.SetValue(ShowOnFocusProperty, value);
30+
element.SetValue(OnlyShowOnFocusProperty, value);
3131
}
3232

3333
#endregion
@@ -45,12 +45,12 @@ public static void SetShowOnFocus(DependencyObject element, bool value)
4545

4646
public static bool GetUsePopup(DependencyObject element)
4747
{
48-
return (bool)element.GetValue(ShowOnFocusProperty);
48+
return (bool)element.GetValue(OnlyShowOnFocusProperty);
4949
}
5050

5151
public static void SetUsePopup(DependencyObject element, bool value)
5252
{
53-
element.SetValue(ShowOnFocusProperty, value);
53+
element.SetValue(OnlyShowOnFocusProperty, value);
5454
}
5555

5656
#endregion

0 commit comments

Comments
 (0)