2016-06-13 34 views
2

我试图建立从MahApps包SimpleChildWindow https://github.com/punker76/MahApps.Metro.SimpleChildWindowMahApps - SimpleChildWindow

可惜我cound不懂的样品,并有几个问题:

  1. 它说:“直接在XAML” - 我应该在哪里放?在父母的窗口还是这是单独的窗口?

  2. await this.ShowChildWindowAsync(new CoolChildWindow(){IsModal = false}); - 我们在哪里得到CoolChildWindow()?

这个问题看起来很愚蠢,虽然我在网络上找不到任何进一步的信息或样本。

将不胜感激的任何帮助或扩展代码示例。

回答

6

“直接在XAML中”是指:将您的子窗口放入您的根网格中。

<Controls:MetroWindow x:Class="MahApps.Metro.SimpleChildWindow.Demo.MainWindow" 
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
         xmlns:Controls="http://metro.mahapps.com/winfx/xaml/controls" 
         xmlns:simpleChildWindow="clr-namespace:MahApps.Metro.SimpleChildWindow;assembly=MahApps.Metro.SimpleChildWindow" 
         Title="MahApps.Metro Simple ChildWindow Demo" 
         GlowBrush="{DynamicResource AccentColorBrush}" 
         WindowStartupLocation="CenterScreen"> 

    <Grid x:Name="RootGrid"> 

     <Grid> 
      <!-- main content here --> 
     </Grid> 

     <simpleChildWindow:ChildWindow x:Name="child01" 
             CloseByEscape="False" 
             Closing="Child01_OnClosing" 
             HorizontalContentAlignment="Stretch" 
             VerticalContentAlignment="Stretch" 
             Padding="15" 
             ChildWindowImage="Error" 
             Title="TestChild 1"> 
      <Grid> 
       <!-- child content here --> 
      </Grid> 
     </simpleChildWindow:ChildWindow> 

     <simpleChildWindow:ChildWindow x:Name="child02" 
             ChildWindowWidth="400" 
             ChildWindowHeight="300" 
             EnableDropShadow="False" 
             Title="TestChild 2"> 
      <Grid> 
       <!-- child content here --> 
      </Grid> 
     </simpleChildWindow:ChildWindow> 

    </Grid> 

</Controls:MetroWindow> 

如果你喜欢使用后面的代码,那么你可以创建一个像CustomChildWindow定制ChildWindow以及创建和调用它

private async void OpenCustomChildWindow_OnClick(object sender, RoutedEventArgs e) 
{ 
    await this.ShowChildWindowAsync(new CustomChildWindow() { IsModal = false }, RootGrid); 
    // or 
    //await this.ShowChildWindowAsync(new CustomChildWindow() { IsModal = false }, OverlayFillBehavior.WindowContent); 
    // or 
    //await this.ShowChildWindowAsync(new CustomChildWindow() { IsModal = true }, OverlayFillBehavior.FullWindow); 
} 

您可以在GitHub上的主要演示发现,这也。

希望这会有所帮助。

+1

谢谢你的例子! :) – Oleksii