从外部按名称绑定到内容模板的子元素

时间:2014-08-21 20:39:50

标签: c# wpf data-binding controltemplate

如何从外部ConnectingLine(一个绑定到FrameworkElement的自定义控件并将它们与一行连接)绑定到名为&#34的内部TextBlock的绑定;顶"和"底部"上班?请注意,我希望整个FrameworkElement用于位置信息。

<Grid>
    <ConnectingLine From="{Binding ElementName=Button1.Top}" To="{Binding ElementName=Button2.Top}" />
    <ConnectingLine From="{Binding ElementName=Button1.Bottom}" To="{Binding ElementName=Button2.Bottom}" />
    <ToggleButton x:Name="Button1">
        <ToggleButton.Template>
            <ControlTemplate>
                <Grid>
                    <Rectangle x:Name="Top" />
                    <Rectangle x:Name="Bottom" />
                </Grid>
            </ControlTemplate>
        </ToggleButton.Template>
    </ToggleButton>
    <ToggleButton x:Name="Button2">
        <ToggleButton.Template>
            <ControlTemplate>
                <Grid>
                    <Rectangle x:Name="Top" />
                    <Rectangle x:Name="Bottom" />
                </Grid>
            </ControlTemplate>
        </ToggleButton.Template>
    </ToggleButton>
</Grid>

我的目标是能够在XAML中绑定。理想情况下,没有额外的绒毛,但可以接受涉及自定义绑定操作符或附加属性的解决方案。

编辑: 我如何获得输出:

Screenshot

每个不同颜色的列都是模板化的ToggleButton之一,在顶部和底部元素之间已经有一个虚线ConnectingLine。横向填充的线条是我感兴趣的。目前我从代码隐藏中实现了我想要的东西。

1 个答案:

答案 0 :(得分:1)

<ToggleButton x:Name="Button">
    <ToggleButton.Template>
        <ControlTemplate>
            <Grid>
               <CheckBox x:Name="FindMe" IsChecked="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=IsChecked}"/>
            </Grid>
        </ControlTemplate>
    </ToggleButton.Template>
</ToggleButton>

让我知道它是否有效。