gpt4 book ai didi

c# - WPF 命令 - 从 Window 和 UserControl 调用,相同的处理程序

转载 作者:太空宇宙 更新时间:2023-11-03 14:26:59 25 4
gpt4 key购买 nike

我怎样才能拥有一个可以从 Window 和 UserControl(通过点击其中任何一个按钮)调用的命令,并且使用相同的执行和可以执行方法?似乎如果我的 UserControl 的 XAML 中有以下内容,它需要 myCommandHandlercanExecuteMyCommand 在我的 UserControl 类中:

<CommandBinding Command="{x:Static local:MyUserControl.MyCommand}"
Executed="myCommandHandler"
CanExecute="canExecuteMyCommand"/>

然后,如果我想在我的窗口中使用相同的命令,我再次需要在我的窗口类中定义 myCommandHandlercanExecuteMyCommand。如何定义一个 Command 以便我的 UserControl 和 Window 都可以访问它,但是 myCommandHandlercanExecuteMyCommand 只在一个类中定义?我是否需要创建自己的命令类而不是在 MyUserControl 中声明静态 RoutedCommand 字段?

最佳答案

在我看来,你能做的最好的事情就是编写你自己的命令,因为正如你所说,你可以在不同的控件和窗口中重用它。

创建自定义命令的第一种方法是从 ICommand 派生。这是一个基本命令类的示例:

public abstract class BaseCommand : ICommand
{
protected IMyViewModel viewModel;

public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}

public BaseCommand(IMyViewModel viewModel)
{
this.viewModel = viewModel;
}

public abstract bool CanExecute(object parameter);
public abstract void Execute(object parameter);
}

要使用命令,例如在按下按钮时,代码将如下所示:

<Button Command="{Binding Path=MyReuseableCommand,
UpdateSourceTrigger=PropertyChanged}" />

我希望这能帮助您找到正确的方向。

关于c# - WPF 命令 - 从 Window 和 UserControl 调用,相同的处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3661479/

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