Триггер для видимости ContextMenu? - PullRequest
2 голосов
/ 24 июня 2011

У меня есть список, который начинается без элементов внутри.Когда пользователь использует графический интерфейс для выбора значения в выпадающем списке и нажимает кнопку «Добавить», в список добавляется элемент.Список также имеет контекстное меню.

Как я могу использовать XAML, чтобы убедиться, что свойство Listbox.contextmenu.Visibility установлено на скрытое, когда в списке нет элементов ??

ОБНОВЛЕНИЕ

Я фактически использовал этот код в конце.Пожалуйста, прокомментируйте его соответствие

<Style TargetType="ListBox">
        <Style.Resources>
            <ContextMenu x:Key="cm">
                <MenuItem Header="Buy"/>
                <MenuItem Header="Sell"/>
            </ContextMenu>
        </Style.Resources>
        <Setter Property="ContextMenu" Value="{StaticResource cm}"/>
        <Style.Triggers>
            <Trigger  Property="ListBox.HasItems" Value="False">
                <Setter Property="ContextMenu.Visibility" Value="Hidden"/>
            </Trigger>
        </Style.Triggers>
    </Style>

1 Ответ

6 голосов
/ 24 июня 2011

Я не думаю, что возиться с видимостью ContextMenu - хорошая идея, просто null из всего меню, если список пуст.

например

<Style TargetType="{x:Type ListBox}">
    <Style.Resources>
        <ContextMenu x:Key="cm">
            <!-- Menu here -->
        </ContextMenu>
    </Style.Resources>
    <Setter Property="ContextMenu" Value="{StaticResource cm}" />
    <Style.Triggers>
        <DataTrigger Binding="{Binding Items.Count, RelativeSource={RelativeSource Self}}" Value="0">
            <Setter Property="ContextMenu" Value="{x:Null}" />
        </DataTrigger>
    </Style.Triggers>
</Style>

Вы также можете выбрать определение ContextMenus только для самих элементов, используя ItemContainerStyle, тогда никакие ContextMenu не могут быть открыты без элементов, но это, конечно, может не соответствовать вашему сценарию.

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