从页面/帧到窗口的WPF通信

时间:2009-10-22 12:19:10

标签: wpf window mouseevent

我已经构建了一个简单的WPF应用程序,可以在一个框架中浏览页面,但其中一个框架是一个图片查看器,我想要它,这样如果有人双击图片就会全屏显示(即帧)。

在WPF中执行此操作的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

您应该能够自己创建一个自定义的RoutedUICommand,可能称为“EnterFullScreen”,您可以在页面中代表图像查看器。您只需在主窗口中将CommandBinding挂钩到此处,这样无论何时触发该命令,您都会做出反应。显然你也需要相反的“ExitFullScreen”,这样每个页面都可以提供自己的用户界面以退出全屏模式。

以下是定义和挂钩命令的代码:

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}" />