C# 未调用验证规则
我的XAML中有以下代码:C# 未调用验证规则,c#,wpf,validation,binding,C#,Wpf,Validation,Binding,我的XAML中有以下代码: <ItemsControl ItemsSource="{Binding Dimensions}"> <ItemsControl.ItemTemplate> <DataTemplate> <Grid> <Grid.ColumnDefinitions>
<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,但我想试试也无妨。是的,你是对的,我的第二个猜测是绑定有问题。在这种情况下,调试窗口中应该有一些输出。