Pergunta

Eu estou usando um TabControl como minha principal área de trabalho em um aplicativo, e eu gostaria de adicionar um item de menu "Janela" que lista os cabeçalhos das abas abertas. O ativo. (Ou seja - focado) Separador devem ser verificados

Eu tentei usar um ItemsTemplate da seguinte forma:

            <MenuItem Header="_Window" ItemsSource="{Binding ElementName=ux_workspace, Path=Items}">
            <MenuItem.ItemTemplate>
                <DataTemplate>
                    <MenuItem Header="{Binding Path=Header}" IsCheckable="True" IsChecked="{Binding IsFocused, Mode=OneWay}">
                </DataTemplate>
            </MenuItem.ItemTemplate>
        </MenuItem>

Cada MenuItem é, então, "nested", por assim dizer, dentro de outro MenuItem, o que realmente não é o resultado pretendido (a caixa de seleção está na área de cabeçalho, e há uma fronteira separado ao redor do item interna).

Existe uma maneira melhor de fazer isso?

Agradecemos antecipadamente.

Foi útil?

Solução

Enquanto parece que deve haver uma maneira de fazer isso com modelos, criar e usar um estilo parece funcionar:

<Style x:Key="TabMenuItem" TargetType="MenuItem">
    <Setter Property="Header" Value="{Binding Path=Header}" />
    <Setter Property="IsCheckable" Value="True" />
    <Setter Property="IsChecked" Value="{Binding Path=IsFocused, Mode=OneWay}" />
</Style>

<MenuItem Header="_Window"
    ItemsSource="{Binding ElementName=ux_workspace, Path=Items}"
    ItemContainerStyle="{StaticResource TabMenuItem}" />

Outras dicas

Malcolm, você vai querer usar IsSelected em vez de IsFocused quando a ligação ao MenuItem.

Se você fizer uso IsSelected em vez de IsFocused, você também será capaz de se ligar IsSelected com um Mode = TwoWay de modo que você não tem que usar um manipulador de clique para selecionar o TabItem apropriada.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top