我從TextBox-KeyUp事件對ViewModel執行命令。我遇到的問題是,在執行命令時,TextBox中綁定到ViewModel上的屬性的文本(仍然)爲空。從代碼隱藏執行命令時未設置MVVM模型屬性
視圖模型:
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);
}
}
}
結合和命令都工作。以正常方式執行命令時,使用按鈕,該屬性設置得很好。
我沒有正確地做到這一點?
我真的很喜歡InputBinding的建議。使用MVVM我寧願不執行代碼隱藏的commandexecution。 –