从控件外部绑定到ControlTemplate元素

时间:2015-03-02 14:17:32

标签: wpf wpf-controls

在我的WPF窗口中,我需要绑定到ControlTemplate内部的值。

这是我的代码(最简化):

<Window x:Class="WpfApplication3.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
      <Style TargetType="Button">
        <Setter Property="Template">
          <Setter.Value>
            <ControlTemplate TargetType="Button">
              <Border Name="MyBorder" Height="100" Width="100" Background="Green" />
            </ControlTemplate>
          </Setter.Value>
        </Setter>
      </Style>
    </Window.Resources>
    <StackPanel>
      <Button Name="MyButtonInstance" />
      <Rectangle Name="MyRectangle" Width="100" Height="200" 
                 Fill="{Binding ????}" />
    </StackPanel>
</Window>

我想将 MyRectangle 填充属性绑定到属于 MyBorder 的值(背景 ) - 这是Button ControlTemplate的一部分。有可能吗?

我试过了

Fill="{Binding ElementName=MyBorder, Path=Background}"

但它不起作用......

1 个答案:

答案 0 :(得分:0)

我认为你不能这样绑定。你可以做的是拥有一个提供给边框和矩形的公共资源。参考下面的代码。

 <Window.Resources>
    <SolidColorBrush x:Key="SameKey" 
               Color="Green"/>
    <Style TargetType="Button">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                    <Border Name="MyBorder" Height="100" Width="100" Background="{StaticResource SameKey}" />
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Window.Resources>
<Grid>
    <StackPanel>
        <Button Name="MyButtonInstance" />
        <Rectangle Name="MyRectangle" Width="100" Height="200" 
             Fill="{StaticResource SameKey}" />
    </StackPanel>
</Grid>