0

フレーム内のページをナビゲートする単純な WPF アプリを作成しましたが、フレームの 1 つは画像ビューアーであり、誰かが画像をダブルクリックすると全画面表示 (フレームの外側) になるようにしたいです。

WPFでこれを行う最良の方法は何ですか?

4

1 に答える 1

0

「EnterFullScreen」と呼ばれるカスタムRoutedUICommandを自分で作成できるはずです。これは、画像ビューアーを表す Page 内から発生させます。CommandBinding をメイン ウィンドウでこれに接続するだけで、そのコマンドが起動されるたびに反応するようになります。明らかに、反対の「ExitFullScreen」も必要になるため、各ページがフルスクリーンモードを終了するための独自の UI を提供できるようになります。

コマンドを定義して接続するためのコードは次のようになります。

public partial class MyWindow : Window
{
    public static readonly RoutedUICommand EnterFullScreenCommand = 
        new RoutedUICommand("Enter fullscreen mode", 
                            "EnterFullScreen", 
                            typeof(MyWindow));
    public static readonly RoutedUICommand ExitFullScreenCommand = 
        new RoutedUICommand("Exit fullscreen mode", 
                            "ExitFullScreen", 
                            typeof(MyWindow));

    public MyWindow()
    {
        this.InitializeComponent();

        this.CommandBindings.Add(
            new CommandBinding(MyWindow.EnterFullScreenCommand,
                               (sender, args) =>
                               {
                                   // logic to go fullscreen here
                               },
                               (sender, args) =>
                               {
                                   args.CanExecuted = 
                                       // am I already fullscreen?
                               }));

        this.CommandBindings.Add(
            new CommandBinding(MyWindow.ExitFullScreenCommand,
                               (sender, args) =>
                               {
                                   // logic to exit fullscreen here
                               },
                               (sender, args) =>
                               {
                                   args.CanExecuted = 
                                       // am I fullscreen right now?
                               }));

    }

次に、ページで次のようにこのコマンドを使用するだけです。

<Button Command="{x:Static myNS:MyWindow.EnterFullScreenCommand}" />
于 2009-10-22T13:09:32.900 に答える