Ujj*_*l27 4 wpf mvvm wpf-controls
我有一个文本框,取决于我需要启用/禁用其他文本框的文本框值.我正在使用MVVM模式.
所以这是我的问题,每当我在TextBox1中输入一些文本时,TextBox1的Setter就会被触发,我能够检查是否循环,是否存在valus,我正在禁用其他文本框.现在,当文本框中有单个值说"9"并且我正在删除/ Backspacing它时,Set事件不会被触发以启用其他文本框.
视图:
<TextBox Text = {Binding TextBox1 , UpdateSourceTrigger = PropertyChanged,Mode= TwoWay}/>
<TextBox Text = {Binding TextBox2 , UpdateSourceTrigger = PropertyChanged,Mode= TwoWay}/>
<TextBox Text = {Binding TextBox3 , UpdateSourceTrigger = PropertyChanged,Mode= TwoWay}/>
Run Code Online (Sandbox Code Playgroud)
查看型号:
private int_textBox1;
public int TextBox1
{
get {return _textBox1;}
set
{
_textBox1= value;
if(value > 0)
{
//Code for Disabling Other Text Boxes (TextBox2 and TextBox3)
}
else
{
// Code for Enabling Other Text Boxes (TextBox2 and TextBox3)
}
NotifyPropertyChanged("TextBox1");
}
}
Run Code Online (Sandbox Code Playgroud)
如果您正在使用MVVM模式,则应创建布尔属性,并将TextBox.IsEnabled属性绑定到它.您的布尔属性应该引发PropertyChanged事件,以便告诉视图(在您的情况下为TextBox)您的属性确实已更改:
public bool IsEnabled1
{
get { return _isEnabled1; }
set
{
if (_isEnabled1 == value)
{
return;
}
_isEnabled1 = value;
RaisePropertyChanged("IsEnabled1");
}
}
Run Code Online (Sandbox Code Playgroud)
然后在xaml中:
<TextBox Text="{Binding TextBox1, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
IsEnabled="{Binding IsEnabled1}" />
Run Code Online (Sandbox Code Playgroud)
和其他TextBoxes一样
归档时间: |
|
查看次数: |
4241 次 |
最近记录: |