【问题标题】:To know the hosting Control of a Control了解一个控件的托管控件
【发布时间】:2014-01-06 09:16:49
【问题描述】:

我有一个自定义控件,它的控件模板如下所示。

 <Style TargetType="local:CustomButton">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="local:CustomButton">
                <Grid>
                    <Border x:Name="CtrlBorder">
                        <StackPanel Orientation="Horizontal">
                            <TextBox Name="Tbox"
                                     BorderThickness="1,1,0,1"
                                     Text="{Binding TextBoxText,
                                                    RelativeSource={RelativeSource TemplatedParent},
                                                    Mode=TwoWay,
                                                    UpdateSourceTrigger=PropertyChanged}" />
                            <Button Width="20"
                                    Background="#FFF0F0F0"
                                    BorderThickness="0,1,1,1"
                                    IsTabStop="False">
                            </Button>
                        </StackPanel>
                    </Border>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

在一个事件中,我得到了Tbox,我需要用这个Tbox 得到CustomButton。 对此有什么想法吗?

【问题讨论】:

    标签: wpf controls


    【解决方案1】:

    可以通过该控件的TemplatedParent 属性。

    【讨论】:

      【解决方案2】:

      自定义控件将作为父控件位于 Visual Tree 中,因此 FindAncestor 将在这里工作:

      Text="{Binding TextBoxText,
                     RelativeSource={RelativeSource Mode=FindAncestor, 
                                                    AncestorType=local:CustomButton},
                     Mode=TwoWay,
                     UpdateSourceTrigger=PropertyChanged}" />
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-06-25
        • 2012-01-17
        • 1970-01-01
        • 2013-05-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多