【问题标题】:WPF Command Bindings Using Alternate Namespace使用备用命名空间的 WPF 命令绑定
【发布时间】:2013-01-18 11:14:43
【问题描述】:

全部,

我已经定义了以下

xmlns:default="clr-namespace:dotDiff2013" 
xmlns:commands="clr-namespace:dotDiff2013.Commands"
<Window.CommandBindings>
        <CommandBinding Command="commands:ComparerCommands.NewComparison"
                        Executed="NewComparison"/>
</Window.CommandBindings>

在命名空间dotDiff2013.Commands 我有

namespace dotDiff2013.Commands 
{             
    public class ComparerCommands
    {
        static ComparerCommands()
        {
            InputGestureCollection inputs = new InputGestureCollection();
            inputs.Add(new KeyGesture(Key.N, ModifierKeys.Control, "Ctrl+N"));
            newComparison = new RoutedUICommand(
                "New Document Comparison", "NewComparison", typeof(ComparerCommands), inputs);
        }

        private static RoutedUICommand newComparison;
        public static RoutedUICommand NewComparison
        {
            get { return newComparison; }
        }
    }
}

但我收到以下错误



我做错了什么?

我是 WPF 的新手,这个错误令人困惑,因为从书中我做了正确的事情。任何建议将不胜感激。

【问题讨论】:

  • 这是否与您绑定到非静态类的静态属性有关?
  • 我的建议是首先确保您可以从后面的代码中进行绑定,然后尝试将其移动到 xaml。 CommandBinding NewComparerCommandBinding = new CommandBinding( commands:ComparerCommands.NewComparison, NewComparisonCommandHandler, CanExecuteNewComparisonHandler); // 将 CommandBinding 添加到根窗口。 RootWindow.CommandBindings.Add(NewComparerCommandBinding);

标签: c# wpf xaml command


【解决方案1】:

使用 {x:Static commands:ComparerCommands.NewComparison} 语法

【讨论】:

  • 您是否删除了所有其他错误?如果程序集重新编译成功,大多数代码更改才会被设计人员识别。 NewComparison 方法是什么样的?
猜你喜欢
  • 2014-12-08
  • 1970-01-01
  • 2016-05-07
  • 1970-01-01
  • 2013-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-17
相关资源
最近更新 更多