【问题标题】:XAML: Get parent backgroundXAML:获取父背景
【发布时间】:2009-12-23 17:47:35
【问题描述】:

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

那么,从我的控件标记中,我如何将 Background 属性设置为等于父(主机)Background 的任何值?感谢您的帮助。

【问题讨论】:

    标签: wpf xaml


    【解决方案1】:

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

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

    由于背景是为任何“控件”定义的,因此应该将控件从树上的一个祖先中获取,并使用它作为背景。


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

    【讨论】:

    • 顺便说一句,这指向了问题:很明显,父母不一定是Control(可以是任何随机的UIElement),因此不需要Background首先是财产。但这并不意味着它实际上不会画一个……
    • 好吧,不幸的是,只有 Control 有背景 - 所以要绑定到父级的背景,您必须绑定到 Control。不过,这确实使这不完美。我将使用另一个选项进行编辑...
    【解决方案2】:

    我将接受 Reed 的回答,因为它确实回答了我最初的问题。但我发现我实际上需要绑定到托管按钮的窗口。这是执行此操作的标记:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-21
      • 2016-12-29
      • 1970-01-01
      • 2017-02-19
      • 1970-01-01
      • 2012-03-10
      • 1970-01-01
      相关资源
      最近更新 更多