Шаблон заголовка с несколькими элементами - PullRequest
4 голосов
/ 11 января 2012

Я пытаюсь написать HeaderTemplate для расширителя.До сих пор я заметил, что все примеры используют ключевое слово {Binding} для получения данных из заголовка.Однако что произойдет, если в заголовке есть несколько элементов управления?Как мне указать, что эти элементы управления должны быть вставлены в определенном месте?

<Window.Resources>
    <Style x:Key="ExpanderStyle" TargetType="{x:Type Expander}">
        <Setter Property="HeaderTemplate">
            <Setter.Value>
                <DataTemplate>
                    <!-- what do I put in here? -->
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Window.Resources>

<Expander Style="{StaticResource ExpanderStyle}">
    <Expander.Header>
        <StackPanel Orientation="Horizontal">
            <TextBlock>Some Text</TextBlock>
            <TextBlock Text="{Binding SomeBinding}" />
            <Button />
        </StackPanel>
    </Expander.Header>
    <Image Source="https://www.google.com/logos/2012/steno12-hp.jpg" />
</Expander>

Должен ли я переместить свою привязку в HeaderTemplate в стиле и просто перезаписать все Header в Expander есть?

Ответы [ 2 ]

2 голосов
/ 11 января 2012

Вы можете использовать ContentPresenter, чтобы вставить любой обычный контент в ваш шаблон

Например:

<Style x:Key="ExpanderStyle" TargetType="{x:Type Expander}">
    <Setter Property="HeaderTemplate">
        <Setter.Value>
            <DataTemplate>
                <Border BorderBrush="Blue" BorderThickness="2">
                    <ContentPresenter />
                </Border>
            </DataTemplate>
        </Setter.Value>
    </Setter>
</Style>
0 голосов
/ 11 января 2012

Свойство заголовка Content может содержать только один объект.

Если вы объединяете эти объекты в одну панель:

<StackPanel>
    <TextBlock>Some Text</TextBlock>
    <TextBlock Text="{Binding SomeBinding}" />
    <Button />
</StackPanel>

тогда в шаблоне вы можете использовать {binding}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...