문제

시스템입니다.Windows.Forms.버 가 있는 시설 DialogResult, 어디는 이 숙박 시설에 시스템입니다.Windows.컨트롤.버 (WPF)?

도움이 되었습니까?

해결책

내장 된 버튼이 없지만 Dialogresult는 간단한 첨부 된 속성을 사용하여 나만의 (원하는 경우)를 만들 수 있습니다.

public class ButtonHelper
{
  // Boilerplate code to register attached property "bool? DialogResult"
  public static bool? GetDialogResult(DependencyObject obj) { return (bool?)obj.GetValue(DialogResultProperty); }
  public static void SetDialogResult(DependencyObject obj, bool? value) { obj.SetValue(DialogResultProperty, value); }
  public static readonly DependencyProperty DialogResultProperty = DependencyProperty.RegisterAttached("DialogResult", typeof(bool?), typeof(ButtonHelper), new UIPropertyMetadata
  {
    PropertyChangedCallback = (obj, e) =>
    {
      // Implementation of DialogResult functionality
      Button button = obj as Button;
      if(button==null)
          throw new InvalidOperationException(
            "Can only use ButtonHelper.DialogResult on a Button control");
      button.Click += (sender, e2) =>
      {
        Window.GetWindow(button).DialogResult = GetDialogResult(button);
      };
    }
  });
}

이것은 다음을 쓸 수 있습니다.

<Button Content="Click Me" my:ButtonHelper.DialogResult="True" />

Winforms와 동등한 동작을 얻습니다 (버튼을 클릭하면 대화 상자가 닫히고 지정된 결과를 반환합니다).

다른 팁

아니요 Button.DialogResult WPF에서. 당신은 그냥 설정해야합니다 DialogResultWindow 참 또는 거짓으로 :

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

그냥 있는지 확인합니다 당신은 당신의 형태를 사용하여 ShowDialogShow.당신이 경우에 후자를 다음과 같은 제외기:

InvalidOperationException 처리되지 않았

DialogResult 만 설정할 수 있습니다 후 창을 만들로 표시됩니다.

MessageBoxResult result = MessageBox.Show("","");

if (result == MessageBoxResult.Yes)
{
// CODE IN HERE
}
else 
{
// CODE IN HERE
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top