2012-04-12 55 views
9

我正在創建一個針對按鈕的樣式。樣式將應用的按鈕在其中的堆疊面板中具有圖像和文本塊。我正在尋找使用觸發器來影響基於特定條件的子控件的屬性。如何從樣式中影響子控件屬性

我想使用按鈕樣式能夠影響堆疊面板的方向以及圖像的定義寬度。

我已經看過在樣式設置器的屬性intellisence中可用的各種子控件類型...我可以看到諸如Grid,DockPanel和TextBlock之類的東西...但是我正在尋找在他們缺席時非常明顯。

當我不能影響某些兒童控制類型時是否有原因?有沒有辦法做到這一點,而不是滾動自定義控件,顯式暴露我想要影響的子控件屬性?

回答

21

您可以使用隱式風格:

<Style TargetType="Button" x:Key="myButtonStyle"> <!-- Has a key, will only be applied on elements that have their style set to {StaticResource myButtonStyle} --> 
    <Setter Property="Background" Value="Green" /> 
    ... 
    <Style.Resources> 
     <Style TargetType="Image"> <!-- No key, so it is implicit and will apply to any child element of type Image --> 
     <Setter Property="Height" Value="20" /> 
     ... 
     </Style> 
    </Style.Resources> 
</Style> 

當然你也可以添加觸發器爲好。

+4

完美的工作!我不知道你可以設置風格的資源。這正是我正在尋找的。當網站強制延遲到期時,我會在幾分鐘內接受您的回答。謝謝! – Chronicide 2012-04-12 16:43:12

+0

不幸的是,這在UWP應用程序中不起作用。 – ThisWillDoIt 2016-09-19 08:54:55