Bu yanıtların çoğu basittir ve eğer birisi WPF'ye başlıyorsa, "Kullanın .ShowDialog()!" Ancak .Show(), temeldeki pencerenin kullanımını engellemek ve kodun kalıcı pencere kapatılana kadar devam etmesini önlemek için kullanmak istediğiniz yöntem budur (değil ).
Öncelikle 2 WPF penceresine ihtiyacınız var. (Biri diğerini arayacak.)
İlk pencereden, bunun MainWindow.xaml olarak adlandırıldığını varsayalım, arka plan kodunda:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
Ardından düğmenizi XAML'nize ekleyin:
<Button Name="btnOpenModal" Click="btnOpenModal_Click" Content="Open Modal" />
Ve Clickrutini sağ tıklayın, "Tanıma git" i seçin. Bunu sizin için MainWindow.xaml.cs içinde oluşturacaktır:
private void btnOpenModal_Click(object sender, RoutedEventArgs e)
{
}
Bu işlevde, diğer sayfayı kendi sayfa sınıfını kullanarak belirtmeniz gerekir. Diğer sayfayı "ModalWindow" olarak adlandırdığınızı varsayalım, bu onun sayfa sınıfı olur ve onu nasıl başlatırsınız (çağırırsınız):
private void btnOpenModal_Click(object sender, RoutedEventArgs e)
{
ModalWindow modalWindow = new ModalWindow();
modalWindow.ShowDialog();
}
Kalıcı iletişim kutusunda ayarlamanız gereken bir değer olduğunu varsayalım. XAML'de bir metin kutusu ve düğme oluşturun ModalWindow:
<StackPanel Orientation="Horizontal">
<TextBox Name="txtSomeBox" />
<Button Name="btnSaveData" Click="btnSaveData_Click" Content="Save" />
</StackPanel>
Sonra Clicktekrar bir olay işleyicisi (başka bir olay) oluşturun ve metin kutusu değerini açık bir statik değişkene kaydetmek ModalWindowve çağırmak için kullanın 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();
}
}
Ardından, ifadenizin ardından .ShowDialog()bu değeri kavrayabilir ve kullanabilirsiniz:
private void btnOpenModal_Click(object sender, RoutedEventArgs e)
{
ModalWindow modalWindow = new ModalWindow();
modalWindow.ShowDialog();
string valueFromModalTextBox = ModalWindow.myValue;
}