Skip to content

Commit 1355d5f

Browse files
committed
Merge pull request #118 from punker76/116-fix-validation-adorner
simply use AdornerDecorator to fix #116
2 parents 89e6825 + d8e09c1 commit 1355d5f

File tree

1 file changed

+147
-145
lines changed

1 file changed

+147
-145
lines changed

MainDemo.Wpf/TextFields.xaml

Lines changed: 147 additions & 145 deletions
Original file line numberDiff line numberDiff line change
@@ -34,157 +34,159 @@
3434
</Style>
3535
</ResourceDictionary>
3636
</UserControl.Resources>
37-
<Grid Margin="16" VerticalAlignment="Top">
38-
<Grid.ColumnDefinitions>
39-
<ColumnDefinition Width="Auto" />
40-
<ColumnDefinition Width="150" />
41-
<ColumnDefinition Width="Auto" />
42-
<ColumnDefinition Width="150" />
43-
<ColumnDefinition Width="*" />
44-
</Grid.ColumnDefinitions>
45-
<Grid.RowDefinitions>
46-
<RowDefinition Height="Auto" />
47-
<RowDefinition Height="Auto" />
48-
<RowDefinition Height="Auto" />
49-
<RowDefinition Height="Auto" />
50-
<RowDefinition Height="Auto" />
51-
<RowDefinition Height="Auto" />
52-
<RowDefinition Height="Auto" />
53-
<RowDefinition Height="Auto" />
54-
<RowDefinition Height="Auto" />
55-
</Grid.RowDefinitions>
56-
<Viewbox Grid.Row="0" Grid.Column="0">
57-
<Canvas Width="24" Height="24">
58-
<Path Data="M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14Z"
59-
Fill="{Binding ElementName=NameTextBox, Path=BorderBrush}" />
60-
</Canvas>
61-
</Viewbox>
62-
<TextBox Grid.Row="0" Grid.Column="1"
63-
x:Name="NameTextBox"
64-
wpf:TextFieldAssist.Hint="Name">
65-
<TextBox.Text>
66-
<Binding Path="Name" UpdateSourceTrigger="PropertyChanged">
67-
<Binding.ValidationRules>
68-
<wpfExample:NotEmptyValidationRule ValidatesOnTargetUpdated="True" />
69-
</Binding.ValidationRules>
70-
</Binding>
71-
</TextBox.Text>
72-
</TextBox>
73-
<TextBlock Grid.Row="0" Grid.Column="2" VerticalAlignment="Center" Margin="16 0 8 0">OS</TextBlock>
74-
<ComboBox Grid.Row="0" Grid.Column="3" wpf:TextFieldAssist.Hint="OS">
75-
<ComboBoxItem>Andoid</ComboBoxItem>
76-
<ComboBoxItem>iOS</ComboBoxItem>
77-
<ComboBoxItem>Linux</ComboBoxItem>
78-
<ComboBoxItem>Windows</ComboBoxItem>
79-
</ComboBox>
80-
<TextBox Grid.Row="0" Grid.RowSpan="2" Grid.Column="4" TextWrapping="Wrap" VerticalAlignment="Stretch" Margin="16 0 0 0"
81-
MinWidth="280"
82-
AcceptsReturn="True"
83-
VerticalScrollBarVisibility="Auto"
84-
wpf:TextFieldAssist.Hint="Multiline text"
85-
Height="80">Multiline. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. The quick brown fox jumps over the lazy dog. War and peace. Keep going. Go on. For how long? Not long. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</TextBox>
86-
<Viewbox Grid.Row="1" Grid.Column="0">
87-
<Canvas Width="24" Height="24">
88-
<Path Data="M6.62,10.79C8.06,13.62 10.38,15.94 13.21,17.38L15.41,15.18C15.69,14.9 16.08,14.82 16.43,14.93C17.55,15.3 18.75,15.5 20,15.5A1,1 0 0,1 21,16.5V20A1,1 0 0,1 20,21A17,17 0 0,1 3,4A1,1 0 0,1 4,3H7.5A1,1 0 0,1 8.5,4C8.5,5.25 8.7,6.45 9.07,7.57C9.18,7.92 9.1,8.31 8.82,8.59L6.62,10.79Z"
89-
Fill="{Binding ElementName=PhoneTextBox, Path=BorderBrush}" />
90-
</Canvas>
91-
</Viewbox>
92-
<TextBox Grid.Row="1" Grid.Column="1"
93-
x:Name="PhoneTextBox"
94-
wpf:TextFieldAssist.Hint="Phone"
95-
/>
96-
<TextBlock Grid.Row="1" Grid.Column="2" VerticalAlignment="Center" Margin="16 0 8 0">Fruit</TextBlock>
97-
<ComboBox Grid.Row="1" Grid.Column="3" wpf:TextFieldAssist.Hint="Search" IsEditable="True" wpf:TextFieldAssist.HintOpacity=".26">
98-
<ComboBoxItem>Apple</ComboBoxItem>
99-
<ComboBoxItem>Banana</ComboBoxItem>
100-
<ComboBoxItem>Pear</ComboBoxItem>
101-
<ComboBoxItem>Orange</ComboBoxItem>
102-
</ComboBox>
103-
<Viewbox Grid.Row="2" Grid.Column="0">
104-
<Canvas Width="24" Height="24">
105-
<Path Data="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M13,10V6H11V10H13M13,14V12H11V14H13Z"
106-
Fill="{Binding ElementName=CommentTextBox, Path=BorderBrush}" />
107-
</Canvas>
108-
</Viewbox>
109-
<TextBox Grid.Row="2" Grid.Column="1"
110-
x:Name="CommentTextBox"
111-
wpf:TextFieldAssist.Hint="Comment"
112-
/>
113-
<Viewbox Grid.Row="2" Grid.Column="2">
114-
<Canvas Width="24" Height="24">
115-
<Path Data="M7,14A2,2 0 0,1 5,12A2,2 0 0,1 7,10A2,2 0 0,1 9,12A2,2 0 0,1 7,14M12.65,10C11.83,7.67 9.61,6 7,6A6,6 0 0,0 1,12A6,6 0 0,0 7,18C9.61,18 11.83,16.33 12.65,14H17V18H21V14H23V10H12.65Z"
116-
Fill="{Binding ElementName=PasswordBox, Path=BorderBrush}" />
117-
</Canvas>
118-
</Viewbox>
119-
<PasswordBox Grid.Row="2" Grid.Column="3"
120-
x:Name="PasswordBox"
121-
wpf:TextFieldAssist.Hint="Password" />
122-
123-
<TextBox Grid.Row="3" Grid.Column="1" wpf:TextFieldAssist.Hint="Floating Hint" Style="{StaticResource MaterialDesignFloatingHintTextBox}"
124-
Margin="0 8 0 8"/>
125-
<ComboBox Grid.Row="3" Grid.Column="3" wpf:TextFieldAssist.Hint="OS" Style="{StaticResource MaterialDesignFloatingHintComboBox}"
126-
Margin="0 8 0 8">
127-
<ComboBoxItem>Andoid</ComboBoxItem>
128-
<ComboBoxItem>iOS</ComboBoxItem>
129-
<ComboBoxItem>Linux</ComboBoxItem>
130-
<ComboBoxItem>Windows</ComboBoxItem>
131-
</ComboBox>
37+
<AdornerDecorator>
38+
<Grid Margin="16" VerticalAlignment="Top">
39+
<Grid.ColumnDefinitions>
40+
<ColumnDefinition Width="Auto" />
41+
<ColumnDefinition Width="150" />
42+
<ColumnDefinition Width="Auto" />
43+
<ColumnDefinition Width="150" />
44+
<ColumnDefinition Width="*" />
45+
</Grid.ColumnDefinitions>
46+
<Grid.RowDefinitions>
47+
<RowDefinition Height="Auto" />
48+
<RowDefinition Height="Auto" />
49+
<RowDefinition Height="Auto" />
50+
<RowDefinition Height="Auto" />
51+
<RowDefinition Height="Auto" />
52+
<RowDefinition Height="Auto" />
53+
<RowDefinition Height="Auto" />
54+
<RowDefinition Height="Auto" />
55+
<RowDefinition Height="Auto" />
56+
</Grid.RowDefinitions>
57+
<Viewbox Grid.Row="0" Grid.Column="0">
58+
<Canvas Width="24" Height="24">
59+
<Path Data="M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14Z"
60+
Fill="{Binding ElementName=NameTextBox, Path=BorderBrush}" />
61+
</Canvas>
62+
</Viewbox>
63+
<TextBox Grid.Row="0" Grid.Column="1"
64+
x:Name="NameTextBox"
65+
wpf:TextFieldAssist.Hint="Name">
66+
<TextBox.Text>
67+
<Binding Path="Name" UpdateSourceTrigger="PropertyChanged">
68+
<Binding.ValidationRules>
69+
<wpfExample:NotEmptyValidationRule ValidatesOnTargetUpdated="True" />
70+
</Binding.ValidationRules>
71+
</Binding>
72+
</TextBox.Text>
73+
</TextBox>
74+
<TextBlock Grid.Row="0" Grid.Column="2" VerticalAlignment="Center" Margin="16 0 8 0">OS</TextBlock>
75+
<ComboBox Grid.Row="0" Grid.Column="3" wpf:TextFieldAssist.Hint="OS">
76+
<ComboBoxItem>Andoid</ComboBoxItem>
77+
<ComboBoxItem>iOS</ComboBoxItem>
78+
<ComboBoxItem>Linux</ComboBoxItem>
79+
<ComboBoxItem>Windows</ComboBoxItem>
80+
</ComboBox>
81+
<TextBox Grid.Row="0" Grid.RowSpan="2" Grid.Column="4" TextWrapping="Wrap" VerticalAlignment="Stretch" Margin="16 0 0 0"
82+
MinWidth="280"
83+
AcceptsReturn="True"
84+
VerticalScrollBarVisibility="Auto"
85+
wpf:TextFieldAssist.Hint="Multiline text"
86+
Height="80">Multiline. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. The quick brown fox jumps over the lazy dog. War and peace. Keep going. Go on. For how long? Not long. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</TextBox>
87+
<Viewbox Grid.Row="1" Grid.Column="0">
88+
<Canvas Width="24" Height="24">
89+
<Path Data="M6.62,10.79C8.06,13.62 10.38,15.94 13.21,17.38L15.41,15.18C15.69,14.9 16.08,14.82 16.43,14.93C17.55,15.3 18.75,15.5 20,15.5A1,1 0 0,1 21,16.5V20A1,1 0 0,1 20,21A17,17 0 0,1 3,4A1,1 0 0,1 4,3H7.5A1,1 0 0,1 8.5,4C8.5,5.25 8.7,6.45 9.07,7.57C9.18,7.92 9.1,8.31 8.82,8.59L6.62,10.79Z"
90+
Fill="{Binding ElementName=PhoneTextBox, Path=BorderBrush}" />
91+
</Canvas>
92+
</Viewbox>
93+
<TextBox Grid.Row="1" Grid.Column="1"
94+
x:Name="PhoneTextBox"
95+
wpf:TextFieldAssist.Hint="Phone"
96+
/>
97+
<TextBlock Grid.Row="1" Grid.Column="2" VerticalAlignment="Center" Margin="16 0 8 0">Fruit</TextBlock>
98+
<ComboBox Grid.Row="1" Grid.Column="3" wpf:TextFieldAssist.Hint="Search" IsEditable="True" wpf:TextFieldAssist.HintOpacity=".26">
99+
<ComboBoxItem>Apple</ComboBoxItem>
100+
<ComboBoxItem>Banana</ComboBoxItem>
101+
<ComboBoxItem>Pear</ComboBoxItem>
102+
<ComboBoxItem>Orange</ComboBoxItem>
103+
</ComboBox>
104+
<Viewbox Grid.Row="2" Grid.Column="0">
105+
<Canvas Width="24" Height="24">
106+
<Path Data="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M13,10V6H11V10H13M13,14V12H11V14H13Z"
107+
Fill="{Binding ElementName=CommentTextBox, Path=BorderBrush}" />
108+
</Canvas>
109+
</Viewbox>
110+
<TextBox Grid.Row="2" Grid.Column="1"
111+
x:Name="CommentTextBox"
112+
wpf:TextFieldAssist.Hint="Comment"
113+
/>
114+
<Viewbox Grid.Row="2" Grid.Column="2">
115+
<Canvas Width="24" Height="24">
116+
<Path Data="M7,14A2,2 0 0,1 5,12A2,2 0 0,1 7,10A2,2 0 0,1 9,12A2,2 0 0,1 7,14M12.65,10C11.83,7.67 9.61,6 7,6A6,6 0 0,0 1,12A6,6 0 0,0 7,18C9.61,18 11.83,16.33 12.65,14H17V18H21V14H23V10H12.65Z"
117+
Fill="{Binding ElementName=PasswordBox, Path=BorderBrush}" />
118+
</Canvas>
119+
</Viewbox>
120+
<PasswordBox Grid.Row="2" Grid.Column="3"
121+
x:Name="PasswordBox"
122+
wpf:TextFieldAssist.Hint="Password" />
132123

133-
<StackPanel Grid.Row="4" Grid.Column="4" Orientation="Horizontal">
134-
<ComboBox wpf:TextFieldAssist.Hint="Virtualisation"
135-
HorizontalAlignment="Left" Margin="16 0 0 0"
136-
ItemsSource="{Binding LongListToTestComboVirtualization}">
137-
<ComboBox.ItemsPanel>
138-
<ItemsPanelTemplate>
139-
<VirtualizingStackPanel />
140-
</ItemsPanelTemplate>
141-
</ComboBox.ItemsPanel>
124+
<TextBox Grid.Row="3" Grid.Column="1" wpf:TextFieldAssist.Hint="Floating Hint" Style="{StaticResource MaterialDesignFloatingHintTextBox}"
125+
Margin="0 8 0 8"/>
126+
<ComboBox Grid.Row="3" Grid.Column="3" wpf:TextFieldAssist.Hint="OS" Style="{StaticResource MaterialDesignFloatingHintComboBox}"
127+
Margin="0 8 0 8">
128+
<ComboBoxItem>Andoid</ComboBoxItem>
129+
<ComboBoxItem>iOS</ComboBoxItem>
130+
<ComboBoxItem>Linux</ComboBoxItem>
131+
<ComboBoxItem>Windows</ComboBoxItem>
142132
</ComboBox>
143-
<ComboBox wpf:TextFieldAssist.Hint="Virt (editable)"
133+
134+
<StackPanel Grid.Row="4" Grid.Column="4" Orientation="Horizontal">
135+
<ComboBox wpf:TextFieldAssist.Hint="Virtualisation"
144136
HorizontalAlignment="Left" Margin="16 0 0 0"
145-
IsEditable="True"
146137
ItemsSource="{Binding LongListToTestComboVirtualization}">
147-
<ComboBox.ItemsPanel>
148-
<ItemsPanelTemplate>
149-
<VirtualizingStackPanel />
150-
</ItemsPanelTemplate>
151-
</ComboBox.ItemsPanel>
152-
</ComboBox>
153-
<ComboBox wpf:TextFieldAssist.Hint="Virt (float hint)"
154-
HorizontalAlignment="Left" Margin="16 0 0 0"
155-
ItemsSource="{Binding LongListToTestComboVirtualization}"
156-
Style="{StaticResource MaterialDesignFloatingHintComboBox}">
157-
<ComboBox.ItemsPanel>
158-
<ItemsPanelTemplate>
159-
<VirtualizingStackPanel />
160-
</ItemsPanelTemplate>
161-
</ComboBox.ItemsPanel>
162-
</ComboBox>
163-
</StackPanel>
138+
<ComboBox.ItemsPanel>
139+
<ItemsPanelTemplate>
140+
<VirtualizingStackPanel />
141+
</ItemsPanelTemplate>
142+
</ComboBox.ItemsPanel>
143+
</ComboBox>
144+
<ComboBox wpf:TextFieldAssist.Hint="Virt (editable)"
145+
HorizontalAlignment="Left" Margin="16 0 0 0"
146+
IsEditable="True"
147+
ItemsSource="{Binding LongListToTestComboVirtualization}">
148+
<ComboBox.ItemsPanel>
149+
<ItemsPanelTemplate>
150+
<VirtualizingStackPanel />
151+
</ItemsPanelTemplate>
152+
</ComboBox.ItemsPanel>
153+
</ComboBox>
154+
<ComboBox wpf:TextFieldAssist.Hint="Virt (float hint)"
155+
HorizontalAlignment="Left" Margin="16 0 0 0"
156+
ItemsSource="{Binding LongListToTestComboVirtualization}"
157+
Style="{StaticResource MaterialDesignFloatingHintComboBox}">
158+
<ComboBox.ItemsPanel>
159+
<ItemsPanelTemplate>
160+
<VirtualizingStackPanel />
161+
</ItemsPanelTemplate>
162+
</ComboBox.ItemsPanel>
163+
</ComboBox>
164+
</StackPanel>
164165

165166

166-
<TextBox Grid.Row="4" Grid.Column="1" wpf:TextFieldAssist.Hint="Floating Hint" Style="{StaticResource MaterialDesignFloatingHintTextBox}" Text="Good stuff"
167-
Margin="0 8 0 8"/>
168-
<ComboBox Grid.Row="4" Grid.Column="3" wpf:TextFieldAssist.Hint="Search" IsEditable="True" Style="{StaticResource MaterialDesignFloatingHintComboBox}"
169-
Margin="0 8 0 8">
170-
<ComboBoxItem>Apple</ComboBoxItem>
171-
<ComboBoxItem>Banana</ComboBoxItem>
172-
<ComboBoxItem>Pear</ComboBoxItem>
173-
<ComboBoxItem>Orange</ComboBoxItem>
174-
</ComboBox>
167+
<TextBox Grid.Row="4" Grid.Column="1" wpf:TextFieldAssist.Hint="Floating Hint" Style="{StaticResource MaterialDesignFloatingHintTextBox}" Text="Good stuff"
168+
Margin="0 8 0 8"/>
169+
<ComboBox Grid.Row="4" Grid.Column="3" wpf:TextFieldAssist.Hint="Search" IsEditable="True" Style="{StaticResource MaterialDesignFloatingHintComboBox}"
170+
Margin="0 8 0 8">
171+
<ComboBoxItem>Apple</ComboBoxItem>
172+
<ComboBoxItem>Banana</ComboBoxItem>
173+
<ComboBoxItem>Pear</ComboBoxItem>
174+
<ComboBoxItem>Orange</ComboBoxItem>
175+
</ComboBox>
175176

176-
<DatePicker Grid.Row="5" Grid.Column="1" Width="100" HorizontalAlignment="Left" Margin="0 8 0 8"
177-
wpf:TextFieldAssist.Hint="Pick Date"/>
178-
<wpf:TimePicker Grid.Row="5" Grid.Column="3" VerticalAlignment="Top" Width="100" HorizontalAlignment="Left" Margin="0 8 0 8"
179-
wpf:TextFieldAssist.Hint="Custom hint" />
180-
<wpf:TimePicker Grid.Row="5" Grid.Column="4" Is24Hours="True" x:Name="PresetTimePicker" VerticalAlignment="Top" Width="100" HorizontalAlignment="Left" Margin="0 8 0 8" />
181-
<Slider Grid.Row="6" Grid.Column="1" TickFrequency="5" Orientation="Horizontal" Minimum="1" Maximum="50" Value="25" />
182-
<StackPanel Orientation="Horizontal" Grid.Row="6" Grid.Column="3" Grid.RowSpan="3" >
183-
<Slider TickFrequency="5" TickPlacement="BottomRight" Orientation="Vertical" Minimum="1" Maximum="50" />
184-
<Slider TickFrequency="25" TickPlacement="TopLeft" Orientation="Vertical" Minimum="1" Maximum="50" IsEnabled="False" Margin="24 8 0 8" />
185-
</StackPanel>
186-
<Slider Grid.Row="7" Grid.Column="1" TickFrequency="5" Orientation="Horizontal" TickPlacement="BottomRight" Minimum="1" Maximum="50" Value="25" IsSelectionRangeEnabled="True" />
187-
<Slider Grid.Row="8" Grid.Column="1" TickFrequency="5" Orientation="Horizontal" TickPlacement="BottomRight" Minimum="1" Maximum="50" Value="25" IsEnabled="False" />
177+
<DatePicker Grid.Row="5" Grid.Column="1" Width="100" HorizontalAlignment="Left" Margin="0 8 0 8"
178+
wpf:TextFieldAssist.Hint="Pick Date"/>
179+
<wpf:TimePicker Grid.Row="5" Grid.Column="3" VerticalAlignment="Top" Width="100" HorizontalAlignment="Left" Margin="0 8 0 8"
180+
wpf:TextFieldAssist.Hint="Custom hint" />
181+
<wpf:TimePicker Grid.Row="5" Grid.Column="4" Is24Hours="True" x:Name="PresetTimePicker" VerticalAlignment="Top" Width="100" HorizontalAlignment="Left" Margin="0 8 0 8" />
182+
<Slider Grid.Row="6" Grid.Column="1" TickFrequency="5" Orientation="Horizontal" Minimum="1" Maximum="50" Value="25" />
183+
<StackPanel Orientation="Horizontal" Grid.Row="6" Grid.Column="3" Grid.RowSpan="3" >
184+
<Slider TickFrequency="5" TickPlacement="BottomRight" Orientation="Vertical" Minimum="1" Maximum="50" />
185+
<Slider TickFrequency="25" TickPlacement="TopLeft" Orientation="Vertical" Minimum="1" Maximum="50" IsEnabled="False" Margin="24 8 0 8" />
186+
</StackPanel>
187+
<Slider Grid.Row="7" Grid.Column="1" TickFrequency="5" Orientation="Horizontal" TickPlacement="BottomRight" Minimum="1" Maximum="50" Value="25" IsSelectionRangeEnabled="True" />
188+
<Slider Grid.Row="8" Grid.Column="1" TickFrequency="5" Orientation="Horizontal" TickPlacement="BottomRight" Minimum="1" Maximum="50" Value="25" IsEnabled="False" />
188189

189-
</Grid>
190+
</Grid>
191+
</AdornerDecorator>
190192
</UserControl>

0 commit comments

Comments
 (0)