将UserControl的依赖属性值传递给其中的Control

hus*_*int 2 data-binding wpf user-controls

我有一个UserControl(复合控件),可以显示为以下伪XAML代码:

<UserControl>
  <DockPanel>
    <TextBox />
    <Button />
  </DockPanel>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

我在一堆地方使用这个自定义控件,并使用WPF样式设置其中一些.此样式将UserControl的Background属性设置为颜色.但是这个背景颜色是在UserControl的背景表面上绘制的,但我希望它只在TextBox控件的背景上绘制.这就是我得到的(颜色=红色):

替代文字http://img261.imageshack.us/img261/8600/62858047wi3.png

如果我将UserControl的Background属性绑定到我的TextBox控件的background属性,我得到以下一个:

替代文字http://img111.imageshack.us/img111/1637/30765795kw5.png

现在它还绘制了内部TextBox控件的背景,但UserControl的Background颜色仍然存在.有没有办法删除UserControl的背景画?

Ken*_*art 5

有很多方法可以做到这一点,但我建议在用户控件上公开自己的属性,并绑定到用户控件中的属性.例如:

<UserControl x:Name="_root" ...>
    ...
    <Button Background="{Binding ButtonBackground, ElementName=_root}"/>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

另一种方法是明确设置TextBox某事物的背景颜色.