2011-01-27 27 views
1

是否有可能在XAML來WPF風格的面板/邊界與兒童/父母的觸發器?

  • 定義樣式,對於每個面板創建一個邊界面板?
  • 選擇項目或其子項時,是否更改祖先項目的樣式(即邊框背景)?

<StackPanel Style="{StaticResource WidgetStyle}"> 
    <Label /> 
    <Button /> 
    <StackPanel> 
    <ListView /> 
    </StackPanel> 
</StackPanel> 

我想有WidgetStyle限定(四捨五入)邊界和更改邊框的顏色,例如如果選擇了ListView或Button。

謝謝!

回答

1

恐怕你的第一個問題的答案是否定的!你不能模板面板控件,他們是無形的。你可以在這做什麼。有幾個選項,例如創建一個包含StackPanel的自定義控件。該answe這個問題包含了不少好點子:

Changing WPF StackPanel template

關於第二個問題,再不行,你不能只靠造型風格基礎上的孩子風格變化的祖先。

你可以使用的ElementName約束力的元素的一些屬性連接在一起:

<Border Background={Binding ElementName=MyButton, Path=Tag>> 
    <StackPanel Style="{StaticResource WidgetStyle}"> 
    <Label /> 
    <Button x:Name="MyButton"/> 
    <StackPanel> 
     <ListView /> 
    </StackPanel> 
    </StackPanel> 
</Border> 

在上面,邊框背景勢必按鈕「則myButton」,那麼你可以申請一個樣式的標記屬性到設置Tag屬性的按鈕,從而改變邊框背景。

+0

謝謝科林! >>對於你的第二個問題,再次否,你不能根據風格改變來設計基於風格變化的祖先。<<不知道它是否會改變你的答案,但我希望根據屬性的變化改變風格(例如IsEnabled)不是風格。乾杯 – DaveO 2011-01-27 07:58:56