未调用验证规则
本文关键字:规则 验证 调用 | 更新日期: 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="/"