Настройка IsCheckable, по-видимому, препятствует отображению подменю - PullRequest
0 голосов
/ 19 февраля 2009

Я пытаюсь привязать IsChecked к Selected DependancyProperty объекта, который я отображаю, этот код работает, но подменю не отображаются, если я его использую. Это правильный путь, и как я могу решить проблему?

<MenuItem Header="Window" Name="windowMenu" ItemsSource="{Binding}">
    <MenuItem.ItemContainerStyle>
        <Style>
             <Setter Property="MenuItem.IsChecked" Value="{Binding Path=Selected}" />
             <Setter Property="MenuItem.IsCheckable" Value="true" />
        </Style>
    </MenuItem.ItemContainerStyle>
</MenuItem>

1 Ответ

0 голосов
/ 19 февраля 2009

Быстрый тест показывает, что если для свойства IsIcheckable объекта MenuItem установлено значение True, оно не будет отображать свои дочерние элементы.

    <Menu>
        <MenuItem Header="File">
            <MenuItem Header="Exit" />
        </MenuItem>
        <MenuItem Header="Tools">
            <MenuItem Header="Options" IsCheckable="True">
                <MenuItem Header="one" IsCheckable="True" />
                <MenuItem Header="two" IsCheckable="True" />
            </MenuItem>
        </MenuItem>
    </Menu>

В приведенном выше примере в Options не отображаются дочерние элементы.

Редактировать: Причина этого в том, что с точки зрения пользовательского опыта, это не тот случай, который действительно имеет смысл. Единственный случай, о котором я могу подумать, - это проверка элемента, который проверяет все его подпункты, но я полагаю, вам лучше использовать флажки для этого.

Переопределение ControlTemplate, безусловно, является вариантом. Обычно Blend может сказать вам, что это за шаблон управления по умолчанию, и вы можете перейти оттуда.

...