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 Click
rutini 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 Click
tekrar bir olay işleyicisi (başka bir olay) oluşturun ve metin kutusu değerini açık bir statik değişkene kaydetmek ModalWindow
ve ç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;
}