wpf 에서 window 클래스의 Dialogresult 와 같은 속성은?

2025. 3. 5. 15:49젬스it

반응형

WPF에서 `DialogResult`와 같은 속성은 기본적으로 제공되지 않습니다. 그러나 WPF에서는 `Window` 클래스를 사용하여 비슷한 기능을 구현할 수 있습니다.

`DialogResult`와 같은 기능을 구현하기 위해 `Window` 클래스의 `DialogResult` 속성을 사용할 수 있습니다. 이를 통해 모달 대화 상자가 닫힐 때 대화 상자의 결과를 반환할 수 있습니다.

예를 들어, 다음과 같이 구현할 수 있습니다:

1. **주 창(MainWindow)에서 대화 상자 열기:**
   ```csharp
   private void OpenDialog_Click(object sender, RoutedEventArgs e)
   {
       var dialog = new MyDialog();
       bool? result = dialog.ShowDialog();

       if (result == true)
       {
           // OK 버튼이 클릭된 경우
           MessageBox.Show("Dialog returned OK");
       }
       else
       {
           // Cancel 버튼이 클릭된 경우
           MessageBox.Show("Dialog returned Cancel");
       }
   }
   ```

2. **대화 상자(MyDialog) 정의:**
   ```csharp
   public partial class MyDialog : Window
   {
       public MyDialog()
       {
           InitializeComponent();
       }

       private void OKButton_Click(object sender, RoutedEventArgs e)
       {
           this.DialogResult = true;
           this.Close();
       }

       private void CancelButton_Click(object sender, RoutedEventArgs e)
       {
           this.DialogResult = false;
           this.Close();
       }
   }
   ```

3. **대화 상자 XAML 정의 (MyDialog.xaml):**
   ```xml
   <Window x:Class="YourNamespace.MyDialog"
           xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
           xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
           Title="MyDialog" Height="200" Width="400">
       <Grid>
           <Button Name="OKButton" Content="OK" HorizontalAlignment="Left" Margin="10" VerticalAlignment="Top" Width="75" Click="OKButton_Click"/>
           <Button Name="CancelButton" Content="Cancel" HorizontalAlignment="Right" Margin="10" VerticalAlignment="Top" Width="75" Click="CancelButton_Click"/>
       </Grid>
   </Window>
   ```

이렇게 하면 WPF에서 `DialogResult`와 유사한 기능을 구현할 수 있습니다. 대화 상자가 닫힐 때 `DialogResult`를 설정하고, 호출한 주 창에서 그 결과를 확인할 수 있습니다.


반응형