检测单击调整大小窗口UWP

时间:2017-12-02 16:41:37

标签: c# uwp titlebar

我想点击调整大小按钮启动消息对话框..

我在任何点击中插入了消息对话框,但是如何在调整大小窗口中启动它?

Resize button

代码:

public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();
    }

    private async void Button_Click(object sender, RoutedEventArgs e)
    {
        var messageDialog = new MessageDialog("This is a Message dialog");
        await messageDialog.ShowAsync();
    }
}

我找到了一个可能的解决方案但是,我只需要点击调整大小按钮,是否可以?

代码:

Window.Current.CoreWindow.SizeChanged += (ss, ee) =>
{
      var appView = Windows.UI.ViewManagement.ApplicationView.GetForCurrentView();
      if (appView.IsFullScreen)
      {
          //show message
      }
      ee.Handled = true;
};

提前致谢!

1 个答案:

答案 0 :(得分:2)

您可以为此

订阅Page Size已更改事件

<强> XAML

<Page
x:Class="App.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:SO15"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" SizeChanged="Page_SizeChanged"> <!-- SizeChanged event -->

<强> C#

private void Page_SizeChanged(object sender, SizeChangedEventArgs e)
{
    Window.Current.CoreWindow.SizeChanged += async (ss, ee) =>
    {
        var appView = ApplicationView.GetForCurrentView();
        if (appView.IsFullScreen)
        {
            var messageDialog = new MessageDialog("Window is Maximized");
            await messageDialog.ShowAsync();
        }
        ee.Handled = true;
    };
    Window.Current.CoreWindow.SizeChanged += async (ss, ee) =>
    {
        var appView = ApplicationView.GetForCurrentView();
        if (!appView.IsFullScreen)
        {
            var messageDialog = new MessageDialog("Window is not Maximized");
            await messageDialog.ShowAsync();

        }
        ee.Handled = true;
    };
}

在c#Recommended

中交替处理

使用此活动

<强> Window.Current.CoreWindow.SizeChanged += CoreWindow_SizeChanged;

bool msgboxshown = false; //add this condition in above solution also if msg dialog shown multiple times at the time of mazimizing window

    private async void CoreWindow_SizeChanged(Windows.UI.Core.CoreWindow sender, Windows.UI.Core.WindowSizeChangedEventArgs args)
    {            
        var appView = ApplicationView.GetForCurrentView();

        if (!appView.IsFullScreen && !msgboxshown)
        {
            var messageDialog = new MessageDialog("Window is not maximized");
            msgboxshown = true;                
            await messageDialog.ShowAsync();
            msgboxshown = false;
        }

        if (appView.IsFullScreen && !msgboxshown)
        {
            var messageDialog = new MessageDialog("Windows is maximized");
            msgboxshown = true;                
            await messageDialog.ShowAsync();
            msgboxshown = false;

        }
        args.Handled = true;
    }

/* You can remove msgboxshown condition , it is because message dialog  will show continuously multiple times  */