2013-03-15 27 views
6

this makalesini ve bazılarını Özel RoutedUICommand oluşturmak için izledim. Infragistics Ribbon kullanıyorum ama sorunun oradan geleceğini sanmıyorum. xaml içinde Özel RoutedUICommand kullanma istisnayı atar

<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> 

Biz görünümünü değiştirmek ve Infragistics Ribbon hissetmeye ihtiyacı vardı ve Infragistics camiasında bir ekip üyesi eklenecek bir Stil önerdi. Sorun şu ki, bunu Şerit'in Kaynaklar bölümüne eklediğimizde işe yaramadı. yüzden aşağıdakileri yapmak zorunda kaldılar:

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

Bu kurdele doğru stilleri uygular, ama bu RibbonResources.xaml biz bir düğme vardır:

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

MyCommand ve MyCommands sınıfını, Tam olarak bahsettiğim makale olarak oluşturulmuştur. Ama aşağıdaki hatayı alıyorum uygulamayı çalıştırdığınızda: Bunun yerine böyle komutunu kullanırsanız

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

:

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

yılında:

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

Ben şu istisna olsun kodun arkasında şu komutu komuta ediyoruz:

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

Düğmeyi doğrudan XamRibbonWindow'umuza koyarsak, iyi çalışır.

Hala WPF ile oldukça yeni ve ne yapıyorum yanlış anlayamıyorum.

cevap

1

MyNamespace:MyCommands.MyCommand ile doğru yoldasınız. Xaml dosyanızda "Shell" olarak MyNamespace'u dahil ettiğiniz görülüyor. Üst kısımdaki igRibbon:XamRibbonWindow etiketinde, bir xmlns:MyNamespace=[whatever] niteliğini içermelidir ya da sırasıyla

Shell:MyCommands.MyCommand için

MyNamespace:MyCommands.MyCommand

gelen komutu değiştirin.

+0

Kullanmakta olduğum Gerçek Ad Alanı Shell, daha kolay okunabilmesi için Shell'im olduğunda MyNamespace yazdım. Sadece bu noktayı kaçırdım. Buna göre düzenlerim. – Dzyann

İlgili konular