繁体   English   中英

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

[英]How to change dependency property behavior in UserControl

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

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

<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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM