C# 未调用验证规则

C# 未调用验证规则,c#,wpf,validation,binding,C#,Wpf,Validation,Binding,我的XAML中有以下代码: <ItemsControl ItemsSource="{Binding Dimensions}"> <ItemsControl.ItemTemplate> <DataTemplate> <Grid> <Grid.ColumnDefinitions>

我的XAML中有以下代码:

<ItemsControl ItemsSource="{Binding Dimensions}">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition MinWidth="100" MaxWidth="300" />
                        </Grid.ColumnDefinitions>

                        <Label Grid.Column="0"
                               Content="Dimension x" 
                               Target="{Binding ElementName=DimTextBox}" />
                        <TextBox Grid.Column="1" Name="DimTextBox" >
                            <Binding Path="/"  UpdateSourceTrigger="PropertyChanged">
                                <Binding.ValidationRules>
                                    <valid:DataSetDimensionValidationRule />
                                </Binding.ValidationRules>
                            </Binding>
                        </TextBox>
                    </Grid>
                </DataTemplate>              
            </ItemsControl.ItemTemplate>                
        </ItemsControl>

其中维度是字符串的可观察集合。看起来绑定正常,我得到了预期的标签和文本框数量,文本框包含默认值。但是,当我在文本框中更改某些内容时,不会调用我的验证规则

我知道这可能很简单,但我被卡住了。帮助?

试试这个

<TextBox Grid.Column="1" Name="DimTextBox" >
    <Binding ValidatesOnExceptions="True" Path="/" UpdateSourceTrigger="PropertyChanged">
        <Binding.ValidationRules>
            <valid:DataSetDimensionValidationRule />
        </Binding.ValidationRules>
    </Binding>
</TextBox>

编辑: 如果上述操作不起作用,请尝试在验证规则中处理这些属性:

我认为您只需要在绑定元素上设置validateSondaErrors=“True”,使其看起来像这样

<TextBox Grid.Column="1" Name="DimTextBox" >
     <Binding Path="/"  UpdateSourceTrigger="PropertyChanged">
           <Binding.ValidationRules>
               <valid:DataSetDimensionValidationRule />
           </Binding.ValidationRules>
     </Binding>
</TextBox>

我不确定问题到底是什么,但当我将维度更新为DimensionView的ObservableCollection时,DimensionView是我自己的类,包含一个标签和一个有效值。代码:

<Label Grid.Column="0"
                           Content="{Binding Label}" 
                           Target="{Binding ElementName=DimTextBox}" />
                    <TextBox Grid.Column="1" Name="DimTextBox" >
                        <Binding Path="Value"  UpdateSourceTrigger="PropertyChanged">
                            <Binding.ValidationRules>
                                <valid:DataSetDimensionValidationRule />
                            </Binding.ValidationRules>
                        </Binding>
                    </TextBox>


我想可能是因为它不喜欢Path=“/”

我想,在实现ValidationRule时,ValidatesOnDaerRors默认为true,但我想试试也无妨。是的,你是对的,我的第二个猜测是绑定有问题。在这种情况下,调试窗口中应该有一些输出。