2009-12-23 28 views
6

我需要將控件的背景設置爲XAML中父代背景的顏色。爲什麼不簡單地使背景透明?這是一個帶陰影的按鈕,所以我需要設置背景;否則,投影通過顯示。XAML:獲取父代背景

所以,從我的控件的標記,我如何設置背景屬性相等於父(主機)背景是什麼?謝謝你的幫助。

回答

11

你應該能夠結合使用來設定:

<Button Background="{Binding Path=Background, RelativeSource={RelativeSource Mode="FindAncestor" AncestorType="{x:Type Control}" AncestorLevel="1"}}" /> 

由於背景是任何「控制」定義,這應該抓住控制一個祖先了樹,並使用它的背景。


另一種選擇是考慮只做一個按鈕樣式,顯示背景爲透明,但實際上仍然繪製投影/邊框。這將允許它在任何UIElement上工作。

+0

這表明這個問題,順便說一句:很明顯,家長不一定是'Control'(可以是任何隨機'UIElement'),因此不需要首先有一個「背景」屬性。但這並不意味着它實際上不會繪製一個...... – 2009-12-23 18:02:15

+0

不幸的是,只有Control有一個背景 - 所以要綁定到父級的背景,您必須綁定到一個Control。儘管如此,這確實使得這種做法不夠完美。我將用另一個選項編輯... – 2009-12-23 18:13:12

8

我打算離開裏德的答案,因爲它確實回答了我原來的問題。但是我發現我實際上需要綁定到託管按鈕的窗口。這裏是標記來做到這一點:

<Button Background="{Binding Path=Background, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}">My Button</Button> 
+0

+1正是我在找的東西。 – BSalita 2012-04-19 11:49:01