我有一个createNotification
,我在其中动态创建了一个新的ItemsControl
,其中包含多个控件并在后面进行建模。到目前为止有效。我还对我的GroupBox
实施了验证,这也可以按预期进行。还有一个TextBox
可以删除此Button
,它绑定到类型GroupBox
的{{1}}。
Ancestor
当我现在在绑定到UserControl
属性的<ItemsControl Grid.Row="2" ItemsSource="{Binding StorageLocationList, Mode=TwoWay}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<GroupBox Style="{StaticResource GroupBoxBase}">
<GroupBox.Header>
<CheckBox x:Name="ExportGroupCheckBox" Content="Storage Location active" IsChecked="{Binding GroupActive, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource CheckBoxBase}" IsEnabled="{Binding ElementName=ActivateExportCheckBox, Path=IsChecked}"/>
</GroupBox.Header>
<Grid>
<Grid IsEnabled="{Binding ElementName=ExportGroupCheckBox, Path=IsChecked}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Content="Name:" VerticalAlignment="Center"/>
<TextBox Grid.Row="0" Grid.Column="1" Style="{StaticResource LimitedCharTextBox}" Text="{Binding Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnNotifyDataErrors=True}"/>
<Label Grid.Row="1" Grid.Column="0" Content="Storage Location:" VerticalAlignment="Center"/>
<TextBox Grid.Row="1" Grid.Column="1" IsReadOnly="True" Style="{StaticResource BaseTextBox}" Text="{Binding StorageLocationPath, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnNotifyDataErrors=True}"/>
<Button Grid.Row="1" Grid.Column="2" Content="Browse..." VerticalAlignment="Stretch" Command="{Binding StorageLocationBrowseCommand}" Style="{StaticResource ButtonBase}"/>
</Grid>
<Canvas>
<Button Canvas.Top="0" Canvas.Right="0" Content="X" ToolTip="Remove Group" Style="{StaticResource RemoveButton}" Command="{Binding ElementName=GPUserControl, Path=DataContext.RemoveStorageLocationGroupCommand}" CommandParameter="{Binding}"/>
</Canvas>
</Grid>
</GroupBox>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
中键入错误内容时,将进行验证,并且TextBox
会显示一个红色边框以表明这一点。凉。但是,删除此Name
的按钮也会显示红色边框。那太奇怪了。
我还尝试将TextBox
中的GroupBox
设置为Validation.ErrorTemplate
,如下所示:
Button
但这也将null
<Setter Property="Validation.ErrorTemplate" Value="{x:Null}"/>
设置为TextBox
。
那么它们如何相互连接?以某种方式通过Validation.ErrorTemplate
?
编辑:
这是null
:
UserControl
答案 0 :(得分:0)
由于使用了相同的数据模型,WPF不仅将您的所有文本控件都标记为无效,不仅是文本框中的内容(实际上,模型无效-不是控件)。文本框只是将状态设置为无效值。如果按钮必须忽略模型的验证状态,则可以使用“删除组”按钮控件的Validation.ErrorTemplate样式设置来解决该问题。
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<AdornedElementPlaceholder />
</ControlTemplate>
</Setter.Value>
</Setter>