WPFのbutton.dialogresultはどこにありますか?
-
20-09-2019 - |
質問
の System.Windows。フォーム。ボタン プロパティがあります dialogresult, 、このプロパティはどこにありますか System.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で。あなたはただ設定する必要があります DialogResult
の Window
真または虚偽へ:
private void buttonOK_Click(object sender, RoutedEventArgs e)
{
this.DialogResult = true;
}
使用してフォームを表示していることを確認してください ShowDialog
それよりも Show
. 。後者を行うと、次の例外が表示されます。
InvalidoperationExceptionは処理されていませんでした
DialogResultは、ウィンドウが作成され、ダイアログとして表示された後にのみ設定できます。
MessageBoxResult result = MessageBox.Show("","");
if (result == MessageBoxResult.Yes)
{
// CODE IN HERE
}
else
{
// CODE IN HERE
}
所属していません StackOverflow