XAML:获取父级背景

Dav*_*man 9 wpf xaml

我需要在XAML中将控件的背景设置为父背景的颜色.为什么不简单地让背景透明?这是一个带阴影的按钮,所以我需要设置背景; 否则,投影会显示出来.

因此,从我的控件的标记,如何设置Background属性等于父(主机)背景是什么?谢谢你的帮助.

Ree*_*sey 14

您应该能够使用以下方式设置绑定:

<Button Background="{Binding Path=Background, RelativeSource={RelativeSource Mode="FindAncestor" AncestorType="{x:Type Control}" AncestorLevel="1"}}" />
Run Code Online (Sandbox Code Playgroud)

由于Background是为任何"Control"定义的,因此应该将控件的一个祖先抓到树上,然后使用它的背景.


另一个需要考虑的选择是制作一个按钮样式,将背景显示为透明,但实际上仍然绘制投影/边框.这将允许它在任何UIElement上工作.


Dav*_*man 14

我将接受里德的回答,因为它确实回答了我原来的问题.但我发现我实际上需要绑定到托管按钮的窗口.这是标记:

<Button Background="{Binding Path=Background, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}">My Button</Button>
Run Code Online (Sandbox Code Playgroud)