我有一种情况,我正在验证用于启用按钮的文本框。如果文本框为空,则该按钮应该被禁用,反之亦然。如果我在XAML后面的代码中编写逻辑,我可以处理代码并实现解决方案,但我认为这不是正确的方式,应该从viewModel而不是后面的代码处理事件。ViewModel中的文本框事件处理
这里是我做了什么:
XAML
<TextBox Grid.Row="1" Margin="6,192,264,0" Height="60" VerticalAlignment="Top"
x:Name="txtDNCNotes" Text="{Binding Path=DNCNotes, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
TextWrapping="Wrap" VerticalScrollBarVisibility="Auto"
Visibility="{Binding Path=DNCNoteTxtVisibility}" Grid.Column="1"
behaviour:TextBoxFilters.IsBoundOnChange="True"
TextChanged="TextBox_TextChanged" />
视图模型
public string DNCNotes
{
get { return _dncNotes; }
set {
if (_dncNotes == value) return;
_dncNotes = value;
OnPropertyChanged("DNCNotes");
}
}
代码背后
private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
var ctx = LayoutRoot.DataContext as NextLeadWizardViewModel;
BindingExpression binding = txtDNCNotes.GetBindingExpression(TextBox.TextProperty).UpdateSource();
ctx.ShowDoNotContact();
}
我想在viewModel中编写下面的代码来实现解决方案,但不知道要写什么。
不知道如果我得到你的权利......“我有一个情况,我在哪里验证用于启用按钮一个文本框”。使用命令的CanExecute? – Lucas
嗨,感谢您的建议,我的意思是我想在ViewModel中编写验证,而不是代码。我从来没有想过CanExecute,但我会去探索它。 – DotNetGeek