相关疑难解决方法(0)

在上下文中启用或禁用验证

介绍

TextBox在视图中有两个,每个绑定到我的视图模型(Property1,Property2)中的一些属性.

TextBox或者在某些布尔值和属性上启用,IDataErrorInfo在视图模型中使用视图中的某些样式进行验证.

问题

我希望禁用项目时禁用验证样式.

NB1:目前,我发现的解决方案是直接在视图模型中更改验证方案,但这需要通知属性更改以强制视图重新读取IDataErrorInfo(虽然属性没有真正改变,只有选择器.. .)

NB2:我的问题是非常接近此一个,但描述和解决方案都太复杂,对我来说,真的明白了吧.

伪代码

<UserControl 

    <UserControl.Resources>
        <Style TargetType="{x:Type Control}" x:Key="ControlValidationStyle">
            ...
        </Style> 
    </UserControl.Resources>

     ...

    <TextBox  
             Text="{Binding Property1, 
                            ValidatesOnDataErrors=True, 
                            UpdateSourceTrigger=PropertyChanged}" 

             IsEnabled="{Binding IsMode1}"

             Style="{StaticResource ControlValidationStyle}"
     />

    <TextBox  
             Text="{Binding Property2, 
                            ValidatesOnDataErrors=True, 
                            UpdateSourceTrigger=PropertyChanged}" 

             IsEnabled="{Binding IsMode1, 
                                 Converter={StaticResource BoolInverse}}"

             Style="{StaticResource ControlValidationStyle}"
     />

</UserControl>
Run Code Online (Sandbox Code Playgroud)

ControlValidationStyle

<Style TargetType="{x:Type Control}" x:Key="ControlValidationStyle">
    <Style.Resources>
        <Style TargetType="ToolTip">
            <Setter Property="Background" Value="Tomato" />
            <Setter Property="BorderBrush" Value="Red" />
            <Setter Property="BorderThickness" Value="2" />
            <Setter Property="Foreground" Value="white" />
        </Style> …
Run Code Online (Sandbox Code Playgroud)

wpf xaml idataerrorinfo

2
推荐指数
1
解决办法
2779
查看次数

标签 统计

idataerrorinfo ×1

wpf ×1

xaml ×1