2016-10-12 8 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

@モートあなたが.icoのファイルプロパティについて話しているなら、それは「ビルドアクション」のリソースとしてマークされています。 – 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

関連する問題