2017-05-12 9 views
1

私は20以上のウィンドウを持つwpfアプリケーションを持っています。そのほとんどはダイアログとして機能し、それらのすべてが同じ背景色を持つようにしたいと思います。すべてのwpfウィンドウにデフォルトのスタイルを適用する

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="/Resources/Resources.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 

<Window.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="/Resources/Resources.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Window.Resources> 
を次のように

<Style TargetType="{x:Type Window}"> 
    <Setter Property="SnapsToDevicePixels" Value="true"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type Window}"> 
       <Grid Background="{StaticResource WindowBackgroundBrush}"> 
        <AdornerDecorator> 
         <ContentPresenter/> 
        </AdornerDecorator> 
        <ResizeGrip x:Name="WindowResizeGrip" HorizontalAlignment="Right" VerticalAlignment="Bottom" Visibility="Collapsed" IsTabStop="false"/> 
       </Grid> 
       <ControlTemplate.Triggers> 
        <Trigger Property="ResizeMode" Value="CanResizeWithGrip"> 
         <Setter TargetName="WindowResizeGrip" Property="Visibility" Value="Visible"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

を次のように私は辞書を持っているリソースディクショナリで定義されたウィンドウのための型指定されたスタイルを持っている

は、アプリケーションと、各ウィンドウのためのリソースに含めます

Visual Studioでは、プロパティエディタの背景ブラシに「継承」と表示されますが、値に「白」と表示されます。私はVisual Studioで希望の背景色を参照してください、しかし、私はまだ白い背景が表示されるアプリケーションを実行するとき。誰も私がここで間違っていることを説明することはできますか? WindowBackgroundBrushは他のコントロールに正しく適用されています。

注意私がするスタイルを簡素化する場合だけ

<Style TargetType="{x:Type Window}"> 
    <Setter Property="Background" Value="Aqua"/> 
</Style> 

Visual Studioは値のソースとして「スタイルセッター」として背景ブラシを示し、値がソースとしてアクアを示しているが、ウィンドウはまだ白いですアプリが起動するとき。

+1

@EdPlunkettは、タグの処理内容です。 – XAMlMAX

+0

@XAMlMAX私はIQの日が低いです。ごめんなさい! –

+0

@EdPlunkett np。私たちは皆、当時を持っています;-) – XAMlMAX

答えて

0

すべて正しくなりました。私のところで働いています...どのようにウィンドウにスタイルを適用していますか?私は次のように適用しました。

<Window x:Class="WpfApplicationScratchpad.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:WpfApplicationScratchpad" 
     mc:Ignorable="d" 
     Title="MainWindow" Height="350" Width="525" Style="{StaticResource Style1}"> 

ここでスタイル1はリソース辞書のスタイルです。 'Style1'という名前を持っています。

<Style x:Key="Style1" TargetType="{x:Type Window}"> 
     <Setter Property="WindowStyle" Value="None"/> 
     <Setter Property="AllowsTransparency" Value="True"/> 
     <Setter Property="SnapsToDevicePixels" Value="true"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type Window}"> 
        <Grid Background="Beige"> 
         <AdornerDecorator> 
          <ContentPresenter/> 
         </AdornerDecorator> 
         <ResizeGrip x:Name="WindowResizeGrip" HorizontalAlignment="Right" VerticalAlignment="Bottom" Visibility="Collapsed" IsTabStop="false"/> 
        </Grid> 
        <ControlTemplate.Triggers> 
         <Trigger Property="ResizeMode" Value="CanResizeWithGrip"> 
          <Setter TargetName="WindowResizeGrip" Property="Visibility" Value="Visible"/> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
+0

それは私のためにも機能します。私はウィンドウがその型のためにスタイルを継承することを期待していました。私が定義した他のコントロールのスタイルと同じですが、私はそうは思いません。 – user7134019

+0

親指アップ!!!!!! – Lina

関連する問題