gpt4 book ai didi

c# - 在 xaml 中使用自定义 RoutedUICommand 会引发异常

转载 作者:太空狗 更新时间:2023-10-29 21:58:27 26 4
gpt4 key购买 nike

我关注了this文章和其他一些创建自定义 RoutedUICommand 的文章。我正在使用 Infragistics Ribbon,但我认为问题不在于此。

<igRibbon:XamRibbonWindow x:Class="MyRibbonWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:igRibbon="http://infragistics.com/Ribbon"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:MyNamespaceTag="clr-namespace:MyNamespace"
xmlns:igWPF="http://schemas.infragistics.com/xaml/wpf" mc:Ignorable="d"
WindowState="Maximized">
<igRibbon:XamRibbonWindow.Resources>
<!-- Some DataTempaltes here -->
</igRibbon:XamRibbonWindow.Resources>
<igRibbon:RibbonWindowContentHost x:Name="ribbonWindowContentHost" >
<igRibbon:RibbonWindowContentHost.Ribbon>
<igRibbon:XamRibbon x:Name="xamRibbon" Theme="[current]">
<igRibbon:XamRibbon.ApplicationMenu>
<igRibbon:ApplicationMenu>
<igRibbon:ApplicationMenu.FooterToolbar>
<igRibbon:ApplicationMenuFooterToolbar>
<igRibbon:ButtonTool Name="appMenuOptions" Caption="Opt_ions"/>
</igRibbon:ApplicationMenuFooterToolbar>
</igRibbon:ApplicationMenu.FooterToolbar>
</igRibbon:ApplicationMenu>
</igRibbon:XamRibbon.ApplicationMenu>
</igRibbon:XamRibbon>
</igRibbon:RibbonWindowContentHost.Ribbon>
<ContentControl Content="{Binding MyContent}"
ContentTemplateSelector="{StaticResource myContentTemplateSelector}" />
</igRibbon:RibbonWindowContentHost>
</igRibbon:XamRibbonWindow>

我们需要更改 Infragistics 功能区的外观和感觉,Infragistics 社区的一名团队成员建议添加一种样式。问题是当我们将它添加到功能区的资源部分时,它不起作用。所以我们被迫做以下事情:

var resourceDictionary = new ResourceDictionary();
resourceDictionary.Source = new Uri(
@"/MyNamespace;component/Resources/RibbonResources.xaml",
UriKind.RelativeOrAbsolute);
xamRibbon.Resources.MergedDictionaries.Add(resourceDictionary);

这会正确应用功能区中的样式,但在 RibbonResources.xaml 中我们有一个按钮:

<Button Name="myButton" 
Command="MyNamespaceTag:MyCommands.MyCommand"
Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}">
<Image Source="MyImage.png" Width="16" Height="16" />
</Button>

MyCommand 和 MyCommands 类的创建与我提到的文章完全相同。但是当我运行该应用程序时,出现以下错误:

XamlParseException: Failed to create a 'Command' from the text MyNamespace:MyCommands.MyCommand' InnerException: Type reference cannot find type named '{clr-namespace:MyNamespace}MyCommands'.

如果我改用这样的命令:

Command="{x:Static MyNamespaceTag:MyCommands.MyCommand}"

我得到以下异常:

XamlParseException: Provide value on 'System.Windows.Markup.StaticExtension' threw an exception. InnerException: Type reference cannot find type named '{clr-namespace:MyNamespaces}MyCommands'.

在代码隐藏中,我们像这样绑定(bind)命令:

CommandBindings.Add(
new CommandBinding(
MyCommands.MyCommand,
Show,
CanShow));

如果我们将按钮直接放在我们有 XamRibbonWindow 的地方,它工作正常。

我对 WPF 还是很陌生,我不知道自己做错了什么。

最佳答案

MyNamespace:MyCommands.MyCommand 您走在正确的道路上。看起来您在 xaml 文件中将 MyNamespace 作为“Shell”包含在内。在顶部,在 igRibbon:XamRibbonWindow 标记中,您应该包含一个 xmlns:MyNamespace=[whatever] 属性,或者,将命令从

MyNamespace:MyCommands.MyCommand

Shell:MyCommands.MyCommand

关于c# - 在 xaml 中使用自定义 RoutedUICommand 会引发异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15440600/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com