gpt4 book ai didi

c# - 如何从 C# 代码中调用 Command 而不是通过将 UI 控件绑定(bind)到它?

转载 作者:行者123 更新时间:2023-11-30 15:56:27 24 4
gpt4 key购买 nike

我正在开发 C#-WPF-App。

在窗口中按下某个按钮时,将加载一个模块。发生这种情况是因为按钮的 Command 属性绑定(bind)到类“ConfigureViewModel”中的 LoadModuleCommand:

<Button Command="{Binding LoadModuleCommand}" Margin="10,10,10,10" Grid.Column="1" Content="Add Module" Grid.Row="0" />

出于某种原因,这对于这个问题并不重要,我现在还想从 MainViewModel.cs 文件调用相同的命令(即 LoadModuleCommand),如果某个条件为真:

 if (id.Equals(Module.Id.ToString()))
{
//call the LoadModuleCommand

}

如果我必须将 LoadModuleCommand 绑定(bind)到第二个 UI 控件,我知道我必须做什么。但是我如何简单地从 c# 代码中调用命令呢?

最佳答案

有几种方法可以解决您的问题。

一种方法是获取绑定(bind)的数据上下文并将其转换。现在你可以像这样执行命令了

var viewModel = (ConfigureViewModel)DataContext;
if (viewModel.LoadModuleCommand.CanExecute(null))
{
viewModel.LoadModuleCommand.Execute(null);
}

请注意,您需要知道数据上下文的类型才能正确转换它。如果可能有多种类型,则使用一个接口(interface)。

第二种方法是命名按钮(例如 <Button x:Name="loadModuleButton" .../> )并引发点击事件,例如

loadModuleButton.RaiseEvent(new RoutedEventArgs(ButtonBase.ClickEvent));

关于c# - 如何从 C# 代码中调用 Command 而不是通过将 UI 控件绑定(bind)到它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46757800/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com