【问题标题】:Can't resolve CommandBinding无法解析 CommandBinding
【发布时间】:2011-12-09 12:32:26
【问题描述】:

我是第一次探索 WPF 和 XAML,还有很多我不明白的地方。

我正在解决这个问题:http://www.codeproject.com/KB/WPF/AvalonDockMVVM.aspx

我已经创建了自己的项目,并正在尝试从 AvalonDockMVVM 添加代码。

目前,我正在尝试构建菜单。

在 MainWindow.xaml 中,我添加了:

<Window.Resources>
    <RoutedUICommand x:Key="Commands.Exit" />
</Window.Resources>

<Window.CommandBindings>
    <CommandBinding Command="{StaticResource Commands.Exit}" Executed="Exit_Executed" />
</Window.CommandBindings>

<DockPanel>
    <Menu DockPanel.Dock="Top">
        <MenuItem Header="_File">
            <MenuItem Header="_Exit" Command="{StaticResource Commands.Exit}" />
        </MenuItem>
    </Menu>
    ...
</DockPanel>

这个想法是构建一个带有单个“退出”选项的菜单。

正如我所说,我几乎不知道自己在做什么。但在我看来, 正在创建一个命令, 将其绑定到代码隐藏中的 ExitExecuted() 方法,而 表示当您选择该菜单项时,执行绑定到该命令的任何内容。

在 AvalonDockMVVM 项目中一切正常。在我的情况下,我在 {StaticResource Commands.Exit} 上打赌错误:资源 Commands.Exit 无法解决。

这让我觉得除了 XAML 中的 元素之外,在代码或配置中的某个地方,还有一些东西定义了 Commands.Exit。但是对于我的生活,我找不到它。

为了通过命令将方法绑定到菜单,我还需要做些什么吗?

【问题讨论】:

  • 我已经添加了更多他们的代码——确切地说,我已经添加了他们的 MainWindowViewModel。现在这解决了。这让我和以往一样困惑。视图模型中没有任何与退出有关的内容。

标签: .net wpf xaml


【解决方案1】:

我确实将您上面的示例复制到了一个新的 WPF 项目中,只是删除了省略号并在后面的代码中添加了一个方法来处理退出命令。它运行得很好,解决命令没有问题。这是我的完整且完整的 XAML

<Window x:Class="WPFTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <RoutedUICommand x:Key="Commands.Exit" />
    </Window.Resources>

    <Window.CommandBindings>
        <CommandBinding Command="{StaticResource Commands.Exit}" Executed="Exit_Executed" />
    </Window.CommandBindings>
    <DockPanel>
        <Menu DockPanel.Dock="Top">
            <MenuItem Header="_File">
                <MenuItem Header="_Exit" Command="{StaticResource Commands.Exit}" />
            </MenuItem>
        </Menu>
    </DockPanel>
</Window>

我会在两个地方寻找解决资源的问题。首先,检查您是否有一个项目级静态资源,上面定义了“Commands.Exit”键(或页面下方的另一个资源)。其次,查看 上方的代码是否有未关闭的标记。那应该抛出一个解析错误,但也许不会?

【讨论】:

    【解决方案2】:

    删除 .在资源键中。即使用&lt;RoutedUICommand x:Key="CommandsExit" /&gt;

    我尝试了您在此处提到的相同代码,它在 VS2010+.Net4.0 中有效。您可以尝试在 Expression blend 中打开并查看问题吗?

    【讨论】:

    • Key 中的点在他们的项目中有效,所以它应该在我的项目中有效。但是我试了一下,还是不行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-14
    • 1970-01-01
    • 2023-03-17
    相关资源
    最近更新 更多