2016-10-17 116 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

您可以注入一個空白樣式,該樣式優先於其他樣式。像:

<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

相關問題