【发布时间】:2011-10-14 23:58:20
【问题描述】:
我正在尝试在我的视图上使用 RoutedCommand,以便我可以使用 CanExecute 功能,但我可以让它工作的唯一方法是使用来自 Prism 的 DelegateCommand。当我尝试使用 RoutedCommand 时,按钮保持非活动状态,并且 CanExecute 函数永远不会被使用。
我尝试在我的 XAML 上放置一个 CommandBinding,但它给出了“只有生成的或代码隐藏类上的实例方法才有效”。错误。这是代码:
<Window.CommandBindings>
<CommandBinding Command="AddCommand"
Executed="my:SettingsDialogViewModel.AddCommandMethod"
CanExecute="my:SettingsDialogViewModel.AddCommandMethodCanExecute" />
</Window.CommandBindings>
我也尝试在代码中设置 CommandBinding,但这也无济于事。我只是不确定如何让它工作,没有将它粘贴在代码隐藏中,或者实现一些我在网上找到的看起来非常复杂的东西。
感谢您的帮助:)
编辑: 以下是我尝试使用的方法:
public void AddCommandMethod()
{
if (SelectedMain != null)
{
SelectedMain.IsDirty = true;
_faveAppList.Add(SelectedMain);
SelectedMain.ListOrder = _faveAppList.Count;
_mainAppList.Remove(SelectedMain);
_listDirty = true;
}
}
public void AddCommandMethodCanExecute(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = true;
}
【问题讨论】:
-
那是静态方法吗?如果是这样,您将需要使用
x:Static语法。 -
对于您提供的代码,我唯一能建议的就是再次浏览 MVVM 网站。您可能还想查看 PRISM。