2016-10-12 2 views
2

Window 아이콘에 문제가 있습니다.WPF - 사용자 정의 스타일 내에 창 아이콘 정의

프로젝트 내 .xaml 파일에 포함 된 Windows에 대해 Style을 직접 작성했습니다. 내가하고 싶은건 Window의 왼쪽 모서리에 시스템 Icon을 보여주고 싶습니다. 일반적으로 Window에 직접 작업하여 Icon 속성에서 지정하는 Icon을 설정할 수 있습니다. 그러나 Window은 아이콘이 정의되지 않은 Style을 사용하기 때문에 작동하지 않습니다.

<Style x:Key="KavoWindowStyle" TargetType="{x:Type Window}"> 
    <Setter Property="WindowChrome.WindowChrome"> 
     <Setter.Value> 
      <WindowChrome CaptionHeight="30" 
          GlassFrameThickness="0" 
          CornerRadius="0" 
          NonClientFrameEdges="None" 
          ResizeBorderThickness="5" 
          UseAeroCaptionButtons="False"/> 
     </Setter.Value> 
    </Setter> 
    <Setter Property="Icon" Value="MyIcon.ico"/>  <================== 
    <Setter Property="BorderBrush" Value="#2ECC71"/> 
    <Setter Property="Background" Value="#646464"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type Window}"> 
       <Grid> 
        <Border Background="{TemplateBinding Background}" 
          BorderBrush="{TemplateBinding BorderBrush}" 
          BorderThickness="1"> 
         <AdornerDecorator> 
          <ContentPresenter/> 
         </AdornerDecorator> 
        </Border> 

        <DockPanel Height="30" 
           VerticalAlignment="Top" 
           LastChildFill="False"> 
         <TextBlock VerticalAlignment="Center" 
            DockPanel.Dock="Left" 
            Margin="5,0,0,0" 
            FontSize="14" 
            Foreground="#E8E8E8" 
            Text="{TemplateBinding Title}" 
            FontFamily="Open Sans Regular"/> 

        </DockPanel> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

을하지만 (내가 프로그램을 실행할 때 나는 예외가) 작동하지 않습니다 : 그래서 난 내 스타일 내부의 Icon 속성에 대한 Setter을 추가했습니다. 나는 이것이 이것이 올바른 방법인지는 모르겠다. 그렇지 않다면 나는 올바른 접근 방식이 무엇인지 알고 싶다. 미리 감사드립니다.

+0

속성에 아이콘을 아이콘으로 표시하셨습니까? – Mohit

+0

@Mohit .ico의 파일 속성에 대해 이야기하고 있다면 네, 그것은 'Build Action'에서 Resource로 표시되어 있습니다. – Belfed

답변

2

아이콘을 사용자 정의 제목 표시 줄의 어딘가에 배치해야합니다. 이제

<DockPanel Height="30" 
     VerticalAlignment="Top" 
     LastChildFill="False"> 
    <Image Source="{TemplateBinding Icon}" /> 
    <TextBlock VerticalAlignment="Center" 
     DockPanel.Dock="Left" 
     Margin="5,0,0,0" 
     FontSize="14" 
     Foreground="#E8E8E8" 
     Text="{TemplateBinding Title}" 
     FontFamily="Open Sans Regular"/>  
</DockPanel> 

가 표시되어야 :

는 예를 들어, 당신은 당신의 TextBlockImage 왼쪽을 넣을 수 있습니다. 귀하의 필요에 맞게 크기와 레이아웃을 조정하십시오.

+0

고마워요, 제가 정확히 찾고 있었던 것이 었습니다! – Belfed

+0

@ Belfed 대단히 환영합니다. :-) – haindl

관련 문제