2016-10-17 18 views
1

コードの一部のコントロールの既定のスタイルをオーバーライドします。その後、私はいくつかのコントロールのすべての子(深い再帰)のすべてのカスタムスタイルを無効にしたい。たとえば、XAMLの場合:WPFですべてのカスタムスタイルを無効にする方法

<StackPanel> 
     <StackPanel.Resources> 
      <Style TargetType="Button"> 
       <Setter Property="Background" Value="Red"/> 
      </Style> 
      <Style TargetType="TextBlock"> 
       <Setter Property="Background" Value="Red"/> 
      </Style> 
     </StackPanel.Resources> 
     <Button>red style here is ok</Button> 
     <TextBlock> also ok</TextBlock> 
     <StackPanel> 
      <StackPanel.Resources> 
       <!-- magic command to disable ALL custom styles, for all controls like 
       <Style TargetType = "FrameworkElement"/> --> 
      </StackPanel.Resources> 
      <Button> no style plz </Button> 
      <TextBlock> bad style-_- </TextBlock> 
     </StackPanel> 
    </StackPanel> 

私は私がコントロールの種類ごとに、このトリックを適用する必要があるため、私は、スタイル= nullのが、私のためにその悪いソリューションを使用することができることを知っています。どうすれば問題を解決できますか?

+0

小さなグループのコントロール用のスタイルと大きなグループ用のスタイルは必要ありませんか?その場合、名前付きリソースをスタイルに使用することができます – Emad

+0

大きなグループのコントロールをスタイルしたい、大きなグループのコントロールをスタイルしたくないので、名前付きスタイルは解決できません。 – virty

答えて

2

他のスタイルよりも優先される空白のスタイルを挿入することができます。 Like:

<StackPanel> 
    <StackPanel.Resources> 
     <Style TargetType="Button"> 
      <Setter Property="Background" Value="Red"/> 
     </Style> 
     <Style TargetType="TextBlock"> 
      <Setter Property="Background" Value="Red"/> 
     </Style> 
    </StackPanel.Resources> 
    <Button>red style here is ok</Button> 
    <TextBlock> also ok</TextBlock> 
    <StackPanel> 
     <StackPanel.Resources> 
      <!-- magic command to disable ALL custom styles, for all controls --> 
      <Style TargetType="Button" /> 
      <Style TargetType="TextBlock" /> 
     </StackPanel.Resources> 
     <Button> no style plz </Button> 
     <TextBlock> bad style-_- </TextBlock> 
    </StackPanel> 
</StackPanel> 
+0

その解決策のためには、どのスタイルが上書きされているか知っていなければならず、各スタイルをリセットする必要があります。 – virty

関連する問題