Привязка элементов меню WPF к коллекции элементов управления вкладками WPF

У меня есть меню WPF и элемент управления Tab. Я хотел бы, чтобы список пунктов меню был сгенерирован из коллекции TabItems на моем элементе управления вкладками. Я привязываю свой элемент управления вкладками к коллекции для создания TabItems. У меня есть стиль TabItem, который использует ContentPresenter для отображения текста TabItem в TextBlock. Когда я привязываю элементы вкладки к моему меню, элементы меню пусты. Я использую Style Setter для установки имени элемента меню, но я не уверен, какое свойство TabItem я бы использовал для установки текста MenuItem. Есть ли обходной путь для моего сценария? Можно ли выполнить привязку к свойству Заголовок элемента вкладки, когда я заранее не знаю количество вкладок? Ниже приведена копия моих объявлений xaml. Вкладка Управление и элементы:

<DataTemplate x:Key="ClosableTabItemTemplate">
        <DockPanel HorizontalAlignment="Stretch">
            <Button
        Command="{Binding Path=CloseWorkSpaceCommand}"
        Content="X"
        Cursor="Hand"
        DockPanel.Dock="Right"
        Focusable="False"
        FontFamily="Courier" 
        FontSize="9"
        FontWeight="Bold"  
        Margin="10,1,0,0"
        Padding="0"
        VerticalContentAlignment="Bottom"
        Width="16" Height="16"
        Background="Red"
        />
            <ContentPresenter HorizontalAlignment="Center"
        Content="{Binding Path=DisplayName}">
                <ContentPresenter.Resources>
                    <Style TargetType="{x:Type TextBlock}"/>
                </ContentPresenter.Resources>
            </ContentPresenter>
    </DockPanel>
    </DataTemplate>
    <DataTemplate x:Key="WorkspacesTemplate">
        <TabControl
      IsSynchronizedWithCurrentItem="True" 
      ItemsSource="{Binding}" 
      ItemTemplate="{StaticResource ClosableTabItemTemplate}"
      Margin="10"
      Background="#4C4C4C"/>
    </DataTemplate>

Мое меню и частичный список стилей

// Я не уверен, какое значение я должен использовать, так как я не использую заголовок

<Menu Background="Transparent">
    <MenuItem Style="{StaticResource TabMenuButtonStyle}"
                        ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, 
                        AncestorType={x:Type TabControl}}, Path=Items}"
                        ItemContainerStyle="{StaticResource TabMenuItem}">
    </MenuItem>
</Menu>

person William    schedule 12.06.2010    source источник


Ответы (1)


Создайте следующий стиль и привяжите свойство Header к свойству отображения в ViewModel.

<Style TargetType="{x:Type TabItem}">
        <Setter Property="Header" Value="{Binding PropertyInViewModel}" />
 </Style>
person William    schedule 12.06.2010