Rất nhiều câu trả lời này rất đơn giản và nếu ai đó đang bắt đầu WPF, họ có thể không biết tất cả "nội dung", vì nó phức tạp hơn là chỉ nói với ai đó "Sử dụng .ShowDialog()
!". Nhưng đó là phương thức (không phải .Show()
) mà bạn muốn sử dụng để chặn sử dụng cửa sổ bên dưới và để giữ cho mã tiếp tục cho đến khi cửa sổ phương thức được đóng lại.
Đầu tiên, bạn cần 2 cửa sổ WPF. (Người này sẽ gọi người kia.)
Từ cửa sổ đầu tiên, giả sử được gọi là MainWindow.xaml, trong mã phía sau của nó sẽ là:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
Sau đó thêm nút của bạn vào XAML:
<Button Name="btnOpenModal" Click="btnOpenModal_Click" Content="Open Modal" />
Và nhấp chuột phải vào Click
thói quen, chọn "Chuyển đến định nghĩa". Nó sẽ tạo nó cho bạn trong MainWindow.xaml.cs:
private void btnOpenModal_Click(object sender, RoutedEventArgs e)
{
}
Trong chức năng đó, bạn phải chỉ định trang khác bằng lớp trang của nó. Giả sử bạn đặt tên trang đó là "ModalWindow", để nó trở thành lớp trang của nó và là cách bạn sẽ khởi tạo (gọi) nó:
private void btnOpenModal_Click(object sender, RoutedEventArgs e)
{
ModalWindow modalWindow = new ModalWindow();
modalWindow.ShowDialog();
}
Giả sử bạn có một giá trị bạn cần đặt trên hộp thoại phương thức. Tạo một hộp văn bản và một nút trong ModalWindow
XAML:
<StackPanel Orientation="Horizontal">
<TextBox Name="txtSomeBox" />
<Button Name="btnSaveData" Click="btnSaveData_Click" Content="Save" />
</StackPanel>
Sau đó tạo lại một trình xử lý sự kiện (một Click
sự kiện khác ) và sử dụng nó để lưu giá trị hộp văn bản vào một biến tĩnh công khai ModalWindow
và gọi this.Close()
.
public partial class ModalWindow : Window
{
public static string myValue = String.Empty;
public ModalWindow()
{
InitializeComponent();
}
private void btnSaveData_Click(object sender, RoutedEventArgs e)
{
myValue = txtSomeBox.Text;
this.Close();
}
}
Sau đó, sau .ShowDialog()
tuyên bố của bạn , bạn có thể lấy giá trị đó và sử dụng nó:
private void btnOpenModal_Click(object sender, RoutedEventArgs e)
{
ModalWindow modalWindow = new ModalWindow();
modalWindow.ShowDialog();
string valueFromModalTextBox = ModalWindow.myValue;
}