2011-08-09 29 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"> ... 

或者,只需在Icon屬性的「屬性」面板中的Visual Studio中指定它即可。但是我沒有弄清楚要做的語法。

回答

1

看來你是在窗口控件中。

<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在查找資源時遇到問題。當你運行它時,顯示的圖標是什麼?如果沒有,嘗試使用'StaticResource'而不是'DynamicRsource' - 如果拋出異常,抱怨資源無法找到 - 加載資源有問題。在此發佈源代碼,也許我可以提供幫助。 – XAMeLi

相關問題