【发布时间】:2014-02-19 16:11:34
【问题描述】:
我通过 TextBox-KeyUp 事件在 ViewModel 上执行命令。我面临的问题是,绑定到 ViewModel 上的属性的 TextBox 中的文本在执行命令时(仍然)为空。
视图模型:
private string _myText;
public string MyText
{
get { return _myText; }
set
{
_myText = value;
RaisePropertyChanged("MyText");
}
}
// ... ICommand stuff here
private object HandleMyCommand(object param)
{
Console.WriteLine(MyText); // at this point MyText --> 'old' value, e.g. null
return null;
}}
XAML:
<StackPannel>
<TextBox x:Name="tbTest" KeyUp="TextBox_KeyUp" Text="{Binding MyText, Mode=TwoWay}" />
<Button x:Name="btnTest" Content="Click" Command="{Binding MyCommand}" />
</StackPannel>
后面的代码:
private void TextBox_KeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
if (btnTest.Command.CanExecute(null))
{
btnTest.Command.Execute(null);
}
}
}
绑定和命令都有效。当以正常方式执行命令时,使用按钮,属性设置得很好。
我没有正确执行此操作吗?
【问题讨论】: