WPF學習分享(二)——彈出文字輸入框
阿新 • • 發佈:2018-10-31
彈出文字輸入框
原本以為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
之後的程式碼不會執行,一開始不知道,結果走了很多彎路(〒︿〒)