未调用验证规则

本文关键字:规则 验证 调用 | 更新日期: 2023-09-27 18:04:10

我的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>

其中Dimensions是字符串的Observable集合。它似乎绑定好了,我得到了预期的标签和文本框的数量,文本框包含默认值。但是,当我更改文本框中的内容时,我的验证规则不会被调用。

我知道这可能是简单的东西,但我卡住了。帮助吗?

未调用验证规则

试试这个…

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

如果上面的方法不起作用,试着在验证规则上修改这些属性:http://msdn.microsoft.com/en-us/library/cc647541.aspx

我认为你只需要在你的绑定元素上设置ValidatesOnDataErrors="True",这样它就会像这样。

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

我不确定问题实际上是什么,但当我更新我的维度是一个ObservableCollection的维度视图,其中维度视图是我自己的类包含一个标签和一个值它工作。代码:

<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="/"