当验证错误时,Wpf清除禁用TextBox.Text。

问题描述 投票:0回答:1

我有三个文本框,文本绑定到三个属性。当我输入第三个文本框时,我需要禁用两个文本框。我必须清除禁用文本框的价值。

`

 <TextBox Text="{Binding TextProperty1}"  IsEnabled="{Binding T1Enabled}"/>
 <TextBox Text="{Binding TextProperty2}"  IsEnabled="{Binding T2Enabled}"/>
 <TextBox Text="{Binding TextProperty3}"  IsEnabled="{Binding T3Enabled}"/>

`

T1-3Enabled是一个只有getter的属性,我在textboxes的lost focus命令上提升了propertychanged。当这些属性刷新时,我清除了禁用文本框的绑定属性(TextProperty1-3)。

但是,当某些禁用的文本框具有验证错误时,将清除source属性,但不会清除textbox.text。

我怎样才能在mvvm中解决这个问题?我不想设置textbox.text。

我希望问题很清楚。感谢您的帮助或其他解决方案。

wpf mvvm clear validationerror
1个回答
0
投票

我用派生的文本框类解决了这个问题。

public class MyTextBox : TextBox
{
    public MyTextBox()
    {
        IsEnabledChanged += MyTextBox_IsEnabledChanged;
    }

    private void MyTextBox_IsEnabledChanged(object sender, DependencyPropertyChangedEventArgs e)
    {
        if(e.NewValue is bool)
            if (!(bool)e.NewValue)
                Text = string.Empty;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.