0

私は次の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>

[閉じる] メニュー項目は、[閉じる] コマンドを使用する必要があることを指定します。Close コマンド バインディングは、CanExecute に対して CommandBinding_CanExecute を呼び出す必要があることを指定しますが、CommandBinding_CanExecute は呼び出されません。閉じるメニュー項目は常に無効になっています。

バインディングは行われていないと思います。誰でも理由を説明できますか?

コンテキスト メニューがビジュアル ツリーにないことに関係している場合、どのように回避しますか?

4

1 に答える 1

1

このステートメントCommand="Close"は何もしません。コマンドは文字列「Close」であると言っています。これが機能しない理由です。

ウィンドウでCloseコマンドインスタンスが定義されている場合は、を使用しますCommand="{Binding Close}"。または、ApplicationCommands.Closeを使用している場合は、次のようになります。

Command="{x:Static ApplicationCommands.Close}"
于 2009-05-20T17:39:00.650 に答える