1、App.xaml
<Application x:Class="多窗口综合案例.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<!-- StartupUri="MainWindow.xaml":入口Window设置 -->
<Application.Resources>
</Application.Resources>
</Application>
2、MainWindow.xaml
<Window x:Class="多窗口综合案例.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="主窗口" Height="350" Width="525">
<Grid>
<Button Content="显示InputWindow" Height="45" HorizontalAlignment="Left" Margin="55,46,0,0" Name="button1" VerticalAlignment="Top" Width="153" Click="button1_Click" />
<Button Content="显示ShowYesNo" Height="46" HorizontalAlignment="Left" Margin="55,140,0,0" Name="button2" VerticalAlignment="Top" Width="153" Click="button2_Click" />
</Grid>
</Window>
3、MaimWindow.xaml.cs
namespace 多窗口综合案例
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
//创建另一个Window的对象
InputWindow inputWin = new InputWindow();
//用这个方法打开这个新的Window
//该方法是一个阻塞式方法,窗口打开的时候不会执行后面的代码
//该方法返回新Window中设置的DialogResult属性值
bool? b = inputWin.ShowDialog();
//判断DialogResult属性值,并分别处理
if (b == null)
{
MessageBox.Show("没设置?");
}
else if (b == true)
{
//可以显示新Window中设置的属性值
MessageBox.Show("确定:"+inputWin.InputValue);
}
else
{
MessageBox.Show("取消");
}
}
private void button2_Click(object sender, RoutedEventArgs e)
{
//打开一个YesNo型的对话框
MessageBoxResult result = MessageBox.Show("真的要删除?","警告",MessageBoxButton.YesNo);
if(result == MessageBoxResult.Yes)
{
MessageBox.Show("删的干净点!!");
}
else if (result == MessageBoxResult.No)
{
MessageBox.Show("多亏没删!!");
}
}
}
}
4、InputWindow.xaml
<Window x:Class="多窗口综合案例.InputWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="请输入值" Height="150" Width="300" ResizeMode="NoResize"
WindowStartupLocation="CenterScreen">
<!-- 窗口标题文字设置:<Window>节点中,Title="关于" -->
<!-- 窗口不允许缩放大小设置:<Window>节点中,ResizeMode="NoResize" -->
<!-- 窗口初始显示位置设置:<Window>节点中,WindowStartupLocation="CenterScreen" -->
<!-- 窗口初始时最大化设置:<Window>节点中,WindowState="Maximized" -->
<Grid>
<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBox Name="txtValue" Grid.ColumnSpan="2"></TextBox>
<Button Name="btnOK" Content="确定" Grid.Row="1" Margin="5" Click="btnOK_Click"></Button>
<Button Name="btnCancel" Content="取消" Grid.Row="1" Grid.Column="1" Margin="5" Click="btnCancel_Click"></Button>
</Grid>
</Grid>
</Window>
5、InputWindow.xaml.cs
namespace 多窗口综合案例
{
/// <summary>
/// InputWindow.xaml 的交互逻辑
/// </summary>
public partial class InputWindow : Window
{
//用来存放文本框输入值的属性
public string InputValue { get; set; }
public InputWindow()
{
InitializeComponent();
}
private void btnOK_Click(object sender, RoutedEventArgs e)
{
InputValue = txtValue.Text;
/*如果窗口是用ShowDialog()方法打开的,则给DialogResult赋值会自动关闭当前窗口,
*并且把DialogResult的值作为ShowDialog()的返回值传给调用的窗口
*/
DialogResult = true;
}
private void btnCancel_Click(object sender, RoutedEventArgs e)
{
DialogResult = false;
}
}
}