0

アプリケーションのデータを更新するためのプリズム デリゲート コマンドのセットアップがあります。また、delegate コマンドを使用して、ウィンドウを閉じるためのショートカットとウィンドウについてセットアップするショートカットも用意しています。

F5 を使用しても、ビュー モデルの更新はトリガーされません。Alt+F4 を使用すると、アプリケーションが閉じます。ただし、ビュー モデルで CloseApplication メソッドを実行しません。Gesture Shortcuts を使用して ViewModel を実行する次のコードには何が欠けていますか?

ユーザーコントロール:

<UserControl.InputBindings>
    <KeyBinding Gesture="ALT+F4" Command="{Binding CloseCommand}" />
    <KeyBinding Gesture="F5" Command="{Binding RefreshCommand}" />
</UserControl.InputBindings>
<DockPanel>
    <Menu DockPanel.Dock="Top">
        <MenuItem Header="_File">
            <MenuItem Header="E_xit" Command="{Binding CloseCommand}" InputGestureText="Alt+F4" />
            <MenuItem Header="Refresh" Command="{Binding RefreshCommand}" InputGestureText="F5" />
        </MenuItem>
        <MenuItem Header="_Help">
            <MenuItem Header="_About" Command="{Binding AboutCommand}" />
        </MenuItem>
    </Menu>
    <ToolBar ToolBarTray.IsLocked="True">
        <Button Content="Home" MinHeight="50" MinWidth="80" VerticalContentAlignment="Bottom" />
        <Button Content="Page 1" MinHeight="50" MinWidth="80" VerticalContentAlignment="Bottom" />
        <Button Content="Page 2" MinHeight="50" MinWidth="80" VerticalContentAlignment="Bottom" />
    </ToolBar>
</DockPanel>

UserControl の ViewModel

public class TopMenuViewModel:NotificationObject
    {
        private DelegateCommand _closeCommand;
        private DelegateCommand _aboutCommand;
        private DelegateCommand _refreshCommand;

        public TopMenuViewModel()
        {
            _closeCommand = new DelegateCommand(CloseApplication);
            _aboutCommand = new DelegateCommand(ShowAboutWindow);
            _refreshCommand = new DelegateCommand(RefreshApplication);
        }

        private void ShowAboutWindow()
        {
            Console.WriteLine("Show about window");
        }

        private void CloseApplication()
        {
            Application.Current.Shutdown();
        }

        private void RefreshApplication()
        {
            Console.WriteLine("Refreshing..");
        }

        public ICommand CloseCommand 
        {
            get { return _closeCommand; }
        }

        public ICommand AboutCommand
        {
            get { return _aboutCommand; }
        }

        public ICommand RefreshCommand
        {
            get { return _refreshCommand; }
        }


    }

マウスを使用してメニューをクリックするか、Alt+x または Alt+A を使用すると、ビュー モデル メソッドが呼び出されます。しかし、私が入れた KeyBinding は使用していません。ご協力ありがとうございます。

4

0 に答える 0