带参数的通用Windows平台命令



在没有MVVM框架的情况下,如何在通用Windows平台中生成参数化命令?我试图实现RelayCommand类,但System.Windows.Input命名空间没有CommandManager类。

如果你不想使用框架,你必须自己实现接口System.Windows.Input.ICommand

命令参数可以通过属性CommandParameter传递。不需要命令管理器。如果对参数使用单向绑定,则在绑定更改时会自动启用/禁用该按钮。对于其他任何情况,请引发事件CanExecuteChanged

当然,在更高级的场景中,您还必须为命令实现一些状态管理,如果命令是在视图模型中定义的,或者使用某种自行实现的命令管理器,这会更容易。

简化示例

这里是一个如何使用x:Bind绑定按钮的简化示例。不需要重新使用视图模型或命令管理器。

示例.xaml:

<Button x:Name="Test" Command="{x:Bind FirstCommand}" CommandParameter="{x:Bind SelectedItem, Mode=OneWay">
   <TextBlock>Test</TextBlock>
</Button>

示例.xaml.cs:

public sealed partial class Example : Page {
    public SampleCommand FirstCommand { get; set; } =
        new SampleCommand();
    public object SelectedItem { get; set; }
    public StandardProjectList() {
        this.InitializeComponent();
    }
}

SampleCommand.cs:

public class SampleCommand : ICommand {
    public event EventHandler CanExecuteChanged;
    public bool CanExecute(object parameter) {
        return parameter != null;
    }   
    public void Execute(object parameter) {
        if (CanExecute(parameter))
            //...
    }   
}

最新更新