Pergunta

Eu tenho o seguinte XAML:

<Window x:Class="Isolator.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Isolator" Height="394" Width="486" Background="Black" WindowStyle="None" WindowState="Maximized">
    <Window.CommandBindings>
        <CommandBinding Command="Close" Executed="CommandBinding_Executed" CanExecute="CommandBinding_CanExecute"/>
    </Window.CommandBindings>
    <Window.ContextMenu>
        <ContextMenu>
            <MenuItem Header="Stop" Name="StopMenuItem" Click="StopMenuItem_Click" />
            <MenuItem Header="Close" Command="Close"/>

        </ContextMenu>
    </Window.ContextMenu>
    <Grid Loaded="Grid_Loaded">

    </Grid>
</Window>

A estreita itens de menu especifica que ele deve usar o comando Fechar. O comando Fechar especifica ligação que CommandBinding_CanExecute deve ser chamado para CanExecute, mas CommandBinding_CanExecute nunca é chamado. O item de menu perto é sempre desativado.

Eu assumo que a ligação não está ocorrendo. Qualquer um pode explicar por quê?

Se ele tem algo a ver com menus de contexto não ser na árvore visual, como fazê-lo trabalhar em torno dele?

Foi útil?

Solução

Esta Command="Close" declaração não faz nada. Você está dizendo que o comando é a cadeia "Close". É por isso que ele não funciona.

Se a instância comando Fechar é definido na janela, Command="{Binding Close}" uso. Ou se estiver usando o ApplicationCommands.Close, então seria

Command="{x:Static ApplicationCommands.Close}"
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top