我的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字符串集合。它似乎绑定好,我得到预期数量的标签和文本框,文本框包含默认值。但是,当我在文本框中更改某些内容时,我的验证规则不会被调用。
我知道这可能很简单,但我被困住了。帮助
答案 0 :(得分:1)
试试这个......
<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
答案 1 :(得分:0)
我认为你只需要在绑定元素上设置ValidatesOnDataErrors =“True”,这样看起来就像这样。
<TextBox Grid.Column="1" Name="DimTextBox" >
<Binding Path="/" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<valid:DataSetDimensionValidationRule />
</Binding.ValidationRules>
</Binding>
</TextBox>
答案 2 :(得分:0)
我不确定问题究竟是什么,但当我将Dimensions更新为DimensionView的ObservableCollection时,DimensionView是我自己的类,包含一个Label和一个值。代码:
<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 =“/”