我想更改ViewModel
属性的值(与 绑定DataContext
)。使用经典事件非常容易,使用命令它成为艰巨的任务。这是我的代码:
公共部分类 MainWindow : 窗口 { ViewModel _vm = new ViewModel(); 公共主窗口() { 初始化组件(); _vm.BtnClick = new BtnClick(); 数据上下文 = _vm; } } 公共类 BtnClick : ICommand { 公共事件 EventHandler CanExecuteChanged { 添加 { CommandManager.RequerySuggested += 值;} 删除 { CommandManager.RequerySuggested -= 值;} } public bool CanExecute(对象参数) { 返回真; } 公共无效执行(对象参数) { Debug.WriteLine(parameter.ToString()); } } 公共类视图模型 { 公共 ICommand BtnClick { 获取;放; } 公共字符串输入{获取;放; } 公共字符串输出{获取;放; } }
<StackPanel>
<TextBox Text="{Binding Input}"></TextBox>
<TextBlock Text="{Binding Output}"></TextBlock>
<Button Command="{Binding Path=BtnClick}" CommandParameter="{Binding Input}">Translate</Button>
</StackPanel>
命令正确地取值TextBox
,现在我想用这个值做事并将其保存到Output
. 问题是从命令的角度来看,我无法同时访问DataContext
和ViewModel
。