ste*_*ess 5 c# data-binding wpf icommand
我正在开发一个 C#-WPF-App。
当按下窗口中的某个按钮时,就会加载一个模块。发生这种情况是因为按钮的 Command 属性绑定到“ConfigureViewModel”类中的 LoadModuleCommand:
<Button Command="{Binding LoadModuleCommand}" Margin="10,10,10,10" Grid.Column="1" Content="Add Module" Grid.Row="0" />
Run Code Online (Sandbox Code Playgroud)
出于某种原因(这对于这个问题并不重要),如果某个条件成立,我现在还想从 MainViewModel.cs 文件中调用相同的命令(即 LoadModuleCommand):
if (id.Equals(Module.Id.ToString()))
{
//call the LoadModuleCommand
}
Run Code Online (Sandbox Code Playgroud)
如果我必须将 LoadModuleCommand 绑定到第二个 UI 控件,我知道我必须做什么。但是我如何简单地从 C# 代码中调用该命令呢?
有多种方法可以解决您的问题。
一种方法是获取绑定的数据上下文并对其进行转换。现在您可以执行如下命令
var viewModel = (ConfigureViewModel)DataContext;
if (viewModel.LoadModuleCommand.CanExecute(null))
{
viewModel.LoadModuleCommand.Execute(null);
}
Run Code Online (Sandbox Code Playgroud)
请注意,您需要知道数据上下文的类型才能正确转换。如果有多种可能的类型,请使用接口。
第二种方法是命名按钮(例如<Button x:Name="loadModuleButton" .../>)并引发单击事件,例如
loadModuleButton.RaiseEvent(new RoutedEventArgs(ButtonBase.ClickEvent));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3871 次 |
| 最近记录: |