2012-11-04 63 views
2

我需要启用/禁用基于方法返回的WPF按钮。
我有一个HasPermission方法,告诉我用户是否可以单击该按钮。如何启用/禁用基于方法返回的WPF按钮

我已经看到我可以使用Command => CanExecute来避免该操作的执行。在这里看到:

How to enable/disable a button in WPF?

我的问题是,我有很多的Windows中,我会检查的权限,这是最好的办法?我真的不得不从2N命令写入我拥有的每个窗口吗?

有没有什么办法可以让这个global
例如,我可以创建通用命令(搜索/创建/ ...),然后只获取它被调用的窗口并将其传递给我的HasPermission方法?

回答

2

您绝对可以创建一个静态类,它包含静态命令,并引用来自XAML中任何位置的静态类。

它是这样的:

public static class GlobalCommands 
{ 
    //ICommand can be DelegateCommand, RelayCommand... whatever floats your boat. 
    public static ICommand SearchCommand { get; set; } 

    //Implementation, and more static commands... 
} 

如果是一些视图:

<UserControl ...> 
    ... 
    <Button Content="Search" Command="{x:Static infra:GlobalCommands.SearchCommand}" /> 
    ... 
</UserControl> 

当然,infra:是XMLNS命名空间映射到GlobalCommands'命名空间。

+0

知道了,但我怎么会告诉窗口的按钮被调用?谢谢。 – eestein

+0

@eestein您可以将它作为'CommandParameter'传递给它。我会让viewmodel实现一些ISearchable接口并将其传递给命令。 –

+0

好的,会做的。谢谢! – eestein

相关问题