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