2011-08-09 5 views
0

저는 WPF 및 XAML을 처음 사용합니다. 나는 codebehind를 사용하여 다음과 같은 해결책을 가지고있다. 그러나 XAML에서보다 쉽게 ​​지정해야하는 것으로 생각됩니다.XAML에서 다른 어셈블리의 아이콘 지정

Icon을 다른 어셈블리의 리소스에 설정하려고합니다 (특히 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

관련 문제