C# 基于布尔绑定为文本框提供两个验证规则
我目前有一个C# 基于布尔绑定为文本框提供两个验证规则,c#,wpf,xaml,C#,Wpf,Xaml,我目前有一个文本框,它有一个验证规则ModelPathWithFolderRule <TextBox Name="ModelNameBox" Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2"> <TextBox.
文本框
,它有一个验证规则ModelPathWithFolderRule
<TextBox Name="ModelNameBox"
Grid.Row="2"
Grid.Column="0"
Grid.ColumnSpan="2">
<TextBox.Text>
<Binding Path="ModelUploadName" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<validationRules:ModelPathWithFolderRule />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
当布尔属性IsLimitedUserGroup
为true
时,我想用LimitedUserUploadPathRule
替换验证规则
我试图通过简单地创建两个具有不同规则的文本框并交替它们的可见性来解决这个问题。但是,这不起作用,因为文本框的名称不能使用两次,并且该名称用于生成错误消息,因此我希望两个文本框的名称保持不变
我还能怎么做呢?我希望继续使用验证规则
,并将其保存在Xaml代码本身中。如果您想在Xaml中执行此操作,可以创建一种样式,根据IsLimitedUserGroup
属性切换文本
的绑定。这样,您可以指定不同的验证规则
<Style x:Key="MyTextBoxStyle" TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}">
<Setter Property="Text">
<Setter.Value>
<Binding Path="ModelUploadName" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<local:ModelPathWithFolderRule />
</Binding.ValidationRules>
</Binding>
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding IsLimitedUserGroup}" Value="True">
<Setter Property="Text">
<Setter.Value>
<Binding Path="ModelUploadName" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<local:LimitedUserUploadPathRule />
</Binding.ValidationRules>
</Binding>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
<TextBox Name="ModelNameBox"
Style="{StaticResource MyTextBoxStyle}"
Grid.Row="2"
Grid.Column="0"
Grid.ColumnSpan="2"/>