Как изменить поведение свойства зависимостей в UserControl - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть пользовательский элемент управления WPF, который содержит TextBox и несколько кнопок.Теперь я хочу изменить способ обработки свойства VerticalContentAlignment пользовательского элемента управления, чтобы изменить только вертикальное выравнивание содержимого содержимого текстового поля, а не самого пользовательского элемента управления.Итак, как мне переопределить свойство зависимостей VerticalContentAlignment пользовательского элемента управления для достижения желаемого поведения?

1 Ответ

1 голос
/ 04 апреля 2019

Вы можете написать ControlTemplate для UserControl, который просто игнорирует свойство VerticalContentAlignment. Затем привяжите VerticalAlignment TextBox к свойству VerticalContentAlignment в UserControl, например, привязкой 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...