이러한 많은 답변은 단순하며 누군가 WPF를 시작하는 경우 누군가에게 "Use .ShowDialog()
!"를 말하는 것보다 더 복잡하기 때문에 모든 "들어간 (in-and-out)"을 알지 못할 수 있습니다 . 그러나 이것이 .Show()
기본 윈도우의 사용을 차단하고 모달 윈도우가 닫힐 때까지 코드가 계속되는 것을 막기 위해 사용하려는 방법 (아닌 )입니다.
먼저 2 개의 WPF 창이 필요합니다. (하나는 다른 사람에게 전화 할 것입니다.)
첫 번째 창에서 MainWindow.xaml이라는 코드 숨김은 다음과 같습니다.
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
그런 다음 XAML에 버튼을 추가하십시오.
<Button Name="btnOpenModal" Click="btnOpenModal_Click" Content="Open Modal" />
Click
루틴을 마우스 오른쪽 단추로 클릭하고 "정의로 이동"을 선택하십시오. MainWindow.xaml.cs에 생성됩니다.
private void btnOpenModal_Click(object sender, RoutedEventArgs e)
{
}
해당 함수 내에서 페이지 클래스를 사용하여 다른 페이지를 지정해야합니다. 다른 페이지의 이름을 "ModalWindow"라고 지정하면 페이지 클래스가되고이를 인스턴스화 (호출)하는 방법입니다.
private void btnOpenModal_Click(object sender, RoutedEventArgs e)
{
ModalWindow modalWindow = new ModalWindow();
modalWindow.ShowDialog();
}
모달 대화 상자에서 설정해야 할 값이 있다고 가정하십시오. ModalWindow
XAML 에서 텍스트 상자와 버튼을 만듭니다 .
<StackPanel Orientation="Horizontal">
<TextBox Name="txtSomeBox" />
<Button Name="btnSaveData" Click="btnSaveData_Click" Content="Save" />
</StackPanel>
그런 다음 이벤트 핸들러 (다른 Click
이벤트)를 다시 작성하고이를 사용하여 텍스트 상자 값을 공용 정적 변수 on에 저장 ModalWindow
하고 호출하십시오 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();
}
}
그런 다음 .ShowDialog()
진술 후에 그 가치를 파악하여 사용할 수 있습니다.
private void btnOpenModal_Click(object sender, RoutedEventArgs e)
{
ModalWindow modalWindow = new ModalWindow();
modalWindow.ShowDialog();
string valueFromModalTextBox = ModalWindow.myValue;
}