如何更改UserControl中的依赖项属性行为

时间:2019-04-04 07:15:10

标签: c# wpf

我有一个WPF用户控件,其中包含一个TextBox和一些按钮。现在,我想更改用户控件的VerticalContentAlignment属性的处理方式,以便仅更改所包含文本框的垂直内容对齐方式,而不更改用户控件本身的垂直内容对齐方式。那么,如何实现用户控件的VerticalContentAlignment依赖性属性呢?

1 个答案:

答案 0 :(得分:1)

您可以为UserControl编写一个ControlTemplate,该模板仅忽略VerticalContentAlignment属性。然后将TextBox的VerticalAlignment绑定到UserControl的VerticalContentAlignment属性,例如通过RelativeSource绑定。

<UserControl ...>
    <UserControl.Template>
        <ControlTemplate TargetType="UserControl">
            <ContentPresenter
                HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"/>
        </ControlTemplate>
    </UserControl.Template>

    <Grid Background="AliceBlue">
        <TextBlock
            Text="Hello"
            VerticalAlignment="{Binding VerticalContentAlignment,
                RelativeSource={RelativeSource AncestorType=UserControl}}"/>
    </Grid>
</UserControl>

测试用例:

<Grid>
    <local:MyUserControl
        Height="100" 
        VerticalAlignment="Center"
        VerticalContentAlignment="Bottom"/>
</Grid>