文本框验证将按钮边框设置为红色

时间:2019-04-11 14:57:49

标签: c# wpf xaml

我有一个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

这是它的屏幕截图: enter image description here

编辑: 这是null

UserControl

1 个答案:

答案 0 :(得分:0)

由于使用了相同的数据模型,WPF不仅将您的所有文本控件都标记为无效,不仅是文本框中的内容(实际上,模型无效-不是控件)。文本框只是将状态设置为无效值。如果按钮必须忽略模型的验证状态,则可以使用“删除组”按钮控件的Validation.ErrorTemplate样式设置来解决该问题。

<Setter Property="Validation.ErrorTemplate">

        <Setter.Value>

            <ControlTemplate>

                        <AdornedElementPlaceholder />
            </ControlTemplate>

        </Setter.Value>

    </Setter>