2017-12-02 122 views
0

点击我想在调整大小按钮的点击启动消息对话框..检测上调整窗口大小UWP

我插在任意点击消息对话框中,但我怎么能启动它在调整窗口大小?

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

您可以订阅页面大小更改事件此

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#中推荐

使用此事件

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 */