首页 > 解决方案 > ComboBox WPF 中的重复验证错误

问题描述

我正在尝试实现一个支持 CRUD 的 ComboBox,但我正在努力解决一个非常特殊的问题它说字段是必需的

组合框的源代码:

<StackPanel Orientation="Vertical">
    <ComboBox ItemsSource="{Binding Bailiffs,Mode=OneWay}" Name="bailiffComboBox"
          SelectedItem ="{Binding SelectedBailiff,ValidatesOnNotifyDataErrors=False}"
          SelectionChanged="BailiffComboBox_Selected"
          DisplayMemberPath="Name"
          Text="{Binding SelectedBailiff.Name, UpdateSourceTrigger=PropertyChanged}"
          IsEditable="{Binding Path=SelectedBailiff.IsEditing}"
          TextBoxBase.TextChanged="BailiffComboBox_TextChanged"
          IsTextSearchEnabled="False"
          mah:TextBoxHelper.Watermark="Съдия изпълнител">

        <ComboBox.InputBindings>
            <KeyBinding Gesture="Enter" Command="{Binding SaveCommand}"/>
            <KeyBinding Gesture="Escape" Command="{Binding CancelEditCommand}"/>
        </ComboBox.InputBindings>
        <ComboBox.ContextMenu>
            <ContextMenu>
                <MenuItem Command="{Binding NewCommand}" Header="Нов"/>
                <MenuItem Command="{Binding EditCommand}" Header="Промяна"/>
                <MenuItem Command="{Binding DeleteCommand}" Header="Изтриване"/>
            </ContextMenu>
        </ComboBox.ContextMenu>
    </ComboBox>
</StackPanel>

我正在使用自定义验证库,它绑定到属性更改并根据定义的规则验证更改的属性。与 FluentValidation 类似。应该验证的视图模型通过委托给上述验证器来实现 INotifyDataErrorInfo(通过 ValidatedViewModel)。ComboBox 中的项目是具有单个属性的 ValidatedViewModel。

所有错误都来自 ComboBox 的 SelectedItem 和 Text 属性绑定。当我删除 SelectedItem 绑定时,我得到一个错误。否则我会得到 4-6 个错误。即使我禁用与此 UserControl 有任何关系的所有绑定的验证,我仍然会收到 3 个验证错误。另请注意,SelectedItem 上的绑定具有 ValidatesOnNotifyDataErrors=False。

这是我尝试过的:

2 绑定错误的来源。SelectedItem 验证失败 3 次。名称,我们正在更改的项目视图模型的属性,按预期失败了一次

标签: c#wpfvalidationcomboboxbinding

解决方案


推荐阅读