我是第一次探索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。但无论如何,我都找不到它。
为了通过命令将方法绑定到菜单,我还需要做些什么吗?
发布于 2011-12-09 12:32:26
我直接将上面的例子复制到一个新的WPF项目中,只是删除了省略号,并在后面的代码中添加了一个方法来处理exit命令。它运行得很好,在解析命令时没有任何问题。下面是我完整的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“键的项目级静态资源(或者页面下面的另一个资源)。其次,查看或上面的代码是否有未闭合的标记。这应该抛出一个解析错误,但也许不会呢?
发布于 2011-12-09 05:17:26
请在移除后重试。在资源密钥.ie中使用<RoutedUICommand x:Key="CommandsExit" />
我尝试了你在这里提到的相同的代码,它在VS2010+.Net4.0..Can中工作,你试图在Expression blend中打开它,看到问题了吗?
https://stackoverflow.com/questions/8437609
复制相似问题