Wpf XAML:获取父背景

Wpf XAML:获取父背景,wpf,xaml,Wpf,Xaml,我需要将控件的背景设置为XAML中父控件背景的颜色。为什么不简单地使背景透明?这是一个带有阴影的按钮,所以我需要设置背景;否则,下拉阴影将显示出来 那么,从控件的标记来看,如何将Background属性设置为与父(主机)背景相同的值?感谢您的帮助。您应该能够使用以下方法设置绑定: <Button Background="{Binding Path=Background, RelativeSource={RelativeSource Mode="FindAncestor" AncestorT

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


那么,从控件的标记来看,如何将Background属性设置为与父(主机)背景相同的值?感谢您的帮助。

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

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

因为背景是为任何“控件”定义的,所以它应该在树上抓住控件的一个祖先,并使用它的背景



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

我将保留Reed的答案,因为它确实回答了我最初的问题。但是我发现我实际上需要绑定到按钮所在的窗口。以下是实现此目的的标记:

<Button Background="{Binding Path=Background, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}">My Button</Button>
我的按钮

顺便说一句,这指出了问题所在:很明显,父对象不一定是
控件
(可以是任何随机
UIElement
),因此首先不需要有
背景
属性。但这并不意味着它实际上不会绘制一个…好吧,不幸的是,只有控件有背景-所以要绑定到父级的背景,您必须绑定到一个控件。不过,这确实让这一点不那么完美。我将使用另一个选项进行编辑。。。