2013-06-01 13 views
0

如果StackPanel包含多種類型的控件(例如ComboBox,CheckBox,Grid),在應用邊距或填充樣式時,XAML中可以表達「你包含的所有項目」或「你包含的每個項目」的概念,並將該樣式應用於StackPanel本身,或者每個控件都必須按照其類型進行明確引用,如下所示:有沒有方法可以說TargetType = ANY?WPF:可以將Style應用於StackPanel中的所有項目,而不管它們的類型是什麼

<StackPanel> 
    <StackPanel.Resources> 
    <Style TargetType="{x:Type foo:ComboBox}"> 
     <Setter Property="Margin" Value="10,10,10,10"/> 
    </Style> 
    <Style TargetType="{x:Type foo:CheckBox}"> 
     <Setter Property="Margin" Value="10,10,10,10"/> 
    </Style> 
     <Style TargetType="{x:Type foo:GridView}"> 
     <Setter Property="Margin" Value="10,10,10,10"/> 
    </Style> 
</StackPanel.Resources> 
+0

是,目標的樣式基本類型,如控制 –

回答

0
<StackPanel> 
    <StackPanel.Resources> 
     <Style TargetType="{x:Type Control}"> 
      <Style.Setters> 
       <Setter Property="Margin" Value="5"/> 
      </Style.Setters> 
     </Style> 
    </StackPanel.Resources> 
    <ComboBox /> 
    <Label /> 
    <ListView /> 
+0

不'{X:類型控制}'不包括第三方自定義控件?上述方法似乎不適用於他們。 – Tim

+0

它應該,我使用telerik很多,這種方法的工作,因爲即使有RadRadioButton派生自RadioButton,它是從按鈕,然後控制派生...然而,這可能不會幫助你。所以我建議,首先看看你的對象瀏覽器中的第三方lib,並找出它們的基類型是什麼 –

+0

有趣。我正在使用最新的Telerik WPF控件。似乎無法得到它的工作。我在RadDocking容器左窗格的StackPanel中有一個RadProgressBar和一個GridViewDataControl。 RadProgressBar在Telerik.Windows.Controls中; BaseTypes:RangeBase - > Control - > FrameworkElement。 – Tim

相關問題