2011-08-09 8 views
0

私はWPFおよびXAMLを初めて使用しています。私はコードビハインドを使用して働く次のソリューションを持っています。しかし、XAMLで指定するのがより簡単なものになるように思えます。XAMLでは、別のアセンブリからアイコンを指定します。

アイコンを別のアセンブリのリソースに設定したい(具体的には、System.Activities.Presentationの "FlowDecisionIcon")。分離コードでは、コンストラクタに追加する場合は、次のコードは、動作します:

InitializeComponent(); // This was already there 
ResourceDictionary dict = new ResourceDictionary { Source = new Uri("pack://application:,,,/System.Activities.Presentation;V4.0.0.0;31bf3856ad364e35;component/themes/icons.xaml") }; 
this.Resources.MergedDictionaries.Add(dict); 
Icon = this.Resources["FlowDecisionIcon"] as DrawingBrush; 

私は私がXAMLでのようなものとして、このいずれかを指定するための良い方法があるだろう期待していた。

<Window xmlns:sap="clr-namespace:System.Activities.Presentation;assembly=System.Activities.Presentation" 
Icon="sap:FlowDecisionIcon"> ... 

または、Visual Studioの[プロパティ]パネルで、Iconプロパティを指定します。しかし、私はどちらかを実行する構文を理解するのに失敗しました。

答えて

1

あなたはWindowコントロールにいるようです。

<Window Icon="{DynamicReosurce FlowDecisionIcon}" 
    ..... 
    <Window.Resources> 
     <ResourceDictionary> 
      <ResourceDictionary.MergedDictionaries> 
       <ReosurceDictionary Source="pack://application:,,,/System.Activities.Presentation;V4.0.0.0;31bf3856ad364e35;component/themes/icons.xaml" /> 
      </ResourceDictionary.MergedDictionaries> 
     </ResourceDictionary> 
    </Window.Resources> 
</Window> 

ただし、リソースをApp.xamlファイルにマージすることをお勧めします。

+0

System.Windows.Controls.Controlから派生したコントロール用です。私は ""を私の親コントロールに置き換えました。その部分はうまくいくようです。しかし、最初の行では、VSでは "{DynamicResource FlowDecisionIcon}"の青い下線が表示されます: 'リソース "FlowDecisionIcon"を解決できませんでした。 –

+0

通常、Visual Studioにはリソースの検索で問題があります。あなたがそれを実行すると、アイコンが表示されますか?もしそうでなければ、 'DynamicRsource'の代わりに' StaticResource'を使うようにしてください。リソースが見つからないという例外がスローされた場合、リソースのロードに何か問題があります。ここにソースを投稿すると、おそらく私は助けることができるでしょう。 – XAMeLi

関連する問題