2

我在应用程序中使用 TabControl 作为我的主要工作区,并且我想添加一个“窗口”菜单项,其中列出了打开的选项卡的标题。应该选中活动的(即聚焦的)选项卡。

我尝试使用 ItemsTemplate 如下:

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

然后,每个 MenuItem 都“嵌套”在另一个 MenuItem 内,这实际上不是预期的结果(复选框位于标题区域,内部项目周围有一个单独的边框)。

有一个更好的方法吗?

提前致谢。

4

2 回答 2

2

虽然似乎应该有一种方法可以使用模板来做到这一点,但创建和使用 Style 似乎是可行的:

<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}" />
于 2009-06-15T16:45:34.653 回答
2

Malcolm,在绑定到 MenuItem 时,您需要使用 IsSelected 而不是 IsFocused。

If you do use IsSelected instead of IsFocused, you'll also be able to bind IsSelected with a Mode=TwoWay so that you don't have to use a Click handler to select the appropriate TabItem.

于 2009-06-15T19:10:18.310 回答