【发布时间】:2009-12-23 17:47:35
【问题描述】:
我需要将控件的背景设置为 XAML 中父级背景的颜色。为什么不简单地使背景透明?这是一个带有阴影的按钮,所以我需要设置背景;否则,阴影会显示出来。
那么,从我的控件标记中,我如何将 Background 属性设置为等于父(主机)Background 的任何值?感谢您的帮助。
【问题讨论】:
我需要将控件的背景设置为 XAML 中父级背景的颜色。为什么不简单地使背景透明?这是一个带有阴影的按钮,所以我需要设置背景;否则,阴影会显示出来。
那么,从我的控件标记中,我如何将 Background 属性设置为等于父(主机)Background 的任何值?感谢您的帮助。
【问题讨论】:
您应该可以使用以下方法设置绑定:
<Button Background="{Binding Path=Background, RelativeSource={RelativeSource Mode="FindAncestor" AncestorType="{x:Type Control}" AncestorLevel="1"}}" />
由于背景是为任何“控件”定义的,因此应该将控件从树上的一个祖先中获取,并使用它作为背景。
另一个需要考虑的选项是只制作一个按钮样式,将背景显示为透明,但实际上仍会绘制阴影/边框。这将允许它在任何 UIElement 上工作。
【讨论】:
Control(可以是任何随机的UIElement),因此不需要Background首先是财产。但这并不意味着它实际上不会画一个……
我将接受 Reed 的回答,因为它确实回答了我最初的问题。但我发现我实际上需要绑定到托管按钮的窗口。这是执行此操作的标记:
<Button Background="{Binding Path=Background, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}">My Button</Button>
【讨论】: