弹出文本输入框
原本以为WPF弹出文本输入框很简单,结果查了一下发现没有。。。虽然有一些第三方的控件,但是由于想要自己实现一个,所以就折腾了一下。
首先需要创建一个窗体,而不是用户控件,一开始被这个坑到了一下。
- Login.xaml.cs
public partial class Login : Window
{
public User user;
public Login()
{
//窗口居中
WindowStartupLocation = WindowStartupLocation.CenterScreen;
InitializeComponent();
this.Width = 300;
this.Height = 150;
}
private void Commit(object sender, RoutedEventArgs e)
{
//业务逻辑。。。。
DialogResult = true;
Close();
}
private void Cancel(object sender, RoutedEventArgs e)
{
DialogResult = false;
}
}
- Login.xaml
<Window x:Class="AdressBook.Login"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:AdressBook"
mc:Ignorable="d"
d:DesignHeight="100" d:DesignWidth="200" Background="AliceBlue">
<StackPanel>
<Label Content="请输入用户的id" HorizontalAlignment="Center" x:Name="Theme"/>
<Grid Height="30" Margin="0 10 0 10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="8*"/>
</Grid.ColumnDefinitions>
<Label Grid.Column="0" HorizontalAlignment="Center" Content="id" x:Name="Input"/>
<TextBox TextWrapping="Wrap" x:Name="id" Grid.Column="1"/>
</Grid>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Button Grid.Column="0" Content="确认" Click="Commit" HorizontalAlignment="Center"/>
<Button Grid.Column="1" Content="取消" HorizontalAlignment="Center" Click="Cancel"/>
</Grid>
</StackPanel>
</Window>
一个自定义的简单弹窗就创建好了。这个窗体主要的不同就是cs代码里面对DialogResult
的赋值。
接下来就是在父窗体弹出窗口了。
//截取部分代码
Login login = new Login();
Hide();
login.ShowDialog();
if (login.DialogResult == true)
{
......
Show();
}
else
{
Environment.Exit(Environment.ExitCode);
}
只需要调用ShowDialog
这个函数就可以了,在DialogResult
没有赋值之前,ShowDialog
之后的代码不会执行,一开始不知道,结果走了很多弯路(〒︿〒)