рдореИрд╕реЗрдЬрдмреЙрдХреНрд╕ рд╡рд┐рднрд┐рдиреНрди рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдзрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд░реВрдк рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХрд╛рд░рдгрд╡рд╢ рдЙрд╕реЗ рдПрд╡рд▓реЛрдирд┐рдпрд╛ рдореЗрдВ рдЬрдЧрд╣ рдирд╣реАрдВ рдорд┐рд▓реА, рддреЛ рд╣рдо рдЕрдкрдиреЗ рдЬреАрд╡рди рдХреЛ рдЙрд╕рдХреЗ рджрдо рдкрд░ рджреЗ рджреЗрдВрдЧреЗред

рдПрдХ рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди, рдЬрд┐рд╕реЗ рдореИрдВ рд╕рдорд░реНрдерди рдФрд░ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА рдЕрдЧрд░ рдХреЛрдИ рднреА рд╡реНрдпрдХреНрддрд┐
рдирдЧреЗрдЯ рдФрд░
рдЧрд┐рдЯрд▓реИрдм рдкрд░ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред
рдореЗрд░рд╛ рд▓рдХреНрд╖реНрдп рдорд╛рдирдХ Windows MsgBox рдХреЗ рдХрд░реАрдм рдЬрд╛рдирд╛ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдЕрдиреБрднрд╡ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВред
рддреЛ:
рд╣рдо рдмреБрд▓рд╛рддреЗ рд╣реИрдВ
MessageBox.ShowForResult("test","Wanna test smth?",MessageBox.MessageBoxButtons.OkCancel);
рдФрд░ рд╣рдореЗрдВ рдПрдХ рд╢реАрд░реНрд╖рдХ рдФрд░ рдкрд╛рда рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рддреИрдпрд╛рд░ рдЦрд┐рдбрд╝рдХреА рдорд┐рд▓рддреА рд╣реИред (рд╡рд┐рдВрдбреЛрдЬ 10, рдЙрдмрдВрдЯреВ 18.04)


рд╕рдВрджреЗрд╢ рдмреЙрдХреНрд╕ рд╡рд░реНрдЧ рдореЗрдВ 3 рд╡рд┐рдзрд┐рдпрд╛рдБ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
ShowForResult - рдХреАрд╕реНрдЯреНрд░реЛрдХреНрд╕ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИ
ShowDialog - рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИ рдФрд░ рдЪрдпрдирд┐рдд рдкреИрд░реЗрдВрдЯ рд╡рд┐рдВрдбреЛ рдХреЗ рд▓рд┐рдП MessageBox рд╕рдВрд╡рд╛рдж рдмрдирд╛рддрд╛ рд╣реИ
рд╢реЛ - рдХреАрд╕реНрдЯреНрд░реЛрдХреНрд╕ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рд╡рд┐рдВрдбреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ
рдПрдкреАрдЖрдИрдХрд┐рд╕реА рднреА рд╡рд┐рдзрд┐ рдХреЗ рдЕрдВрджрд░ рдПрдХ рд╡рд┐рдВрдбреЛ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ
var messageBox = new MessageBox();
рдЬреЛ рд╕рд╛рдордЧреНрд░реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред
messageBox.Content = CreateBaseMsgBox(text, buttons, messageBox);
рдЗрд╕ рдорд╛рдорд▓реЗ рдХреА рд╕рд╛рдордЧреНрд░реА рдЧреНрд░рд┐рдб рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рджреЛ рд▓рд╛рдЗрдиреЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: рдкрд╛рда рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛:
var textBlock = new TextBlock(); textBlock.Text = text; textBlock.TextAlignment = TextAlignment.Center; textBlock.TextWrapping = TextWrapping.Wrap; Grid.SetRow(textBlock,0); grid.Children.Add(textBlock);
рдмрдЯрди рдХреЗ рд╕рд╛рде рдиреЗрд╕реНрдЯреЗрдб рдЧреНрд░рд┐рдб рдХреЗ рд▓рд┐рдП рджреВрд╕рд░рд╛:
var btnGrid = GetButtonGrid(GetButton(window, MessageBoxResult.Yes), GetButton(window,MessageBoxResult.No)); Grid.SetRow(btnGrid,1); grid.Children.Add(btnGrid);
GetButtonGrid рд╡рд┐рдзрд┐ рдХрд╛ рдкреВрд░реНрдг рдЙрджрд╛рд╣рд░рдгред private static Grid GetButtonGrid(params Button[] buttons) { var grid = new Grid(); List<ColumnDefinition> definitions = new List<ColumnDefinition>(); for (int i = 0; i < buttons.Length; i++) { definitions.Add(new ColumnDefinition{Width = new GridLength(5)}); definitions.Add(new ColumnDefinition{Width = new GridLength(1,GridUnitType.Star)}); } definitions.Add(new ColumnDefinition{Width = new GridLength(5)}); grid.ColumnDefinitions.AddRange(definitions); var j = 1; foreach (var btn in buttons) { Grid.SetColumn(btn,j); j += 2; grid.Children.Add(btn); } return grid; }
рдпрд╣ рдЧрддрд┐рд╢реАрд▓ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЖрдкрдХреЛ рдЕрд╕реАрдорд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдмрдЯрди рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдмрдбрд╝реЗ рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд┐рдирд╛ рдореИрд╕реЗрдЬрдмреЙрдХреНрд╕ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдмрдЯрди рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЧрдИ рд╣реИ:
GetButton(MessageBox window,MessageBoxResult result)
рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА private static Button GetButton(MessageBox window,MessageBoxResult result) { var btn = new Button(); btn.Content = result.ToString(); btn.Click += (_, __) => { window.Res = result; window.Close(); }; return btn; }
рд╡рд┐рдзрд┐ рдПрдХ рд╡рд┐рдВрдбреЛ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреА рд╣реИ рдЬрд┐рд╕реЗ рдмрдЯрди рд╣реЗрд░рдлреЗрд░ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рд╡рд╛рдкрд╕ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рдкрд░рд┐рдгрд╛рдоред
рдФрд░, рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЕрдВрддрд┐рдо рдЪреАрдЬрд╝ рдПрдХ рдХреЛрдб рдХреЛрдб рд╣реИ рдЬреЛ рдПрдХ рдмрдЯрди рдХреНрд▓рд┐рдХ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:
var tcs = new TaskCompletionSource<MessageBoxResult>(); messageBox.Closed += delegate { tcs.TrySetResult(messageBox.Res); }; ... return tcs.Task;
рдирддреАрдЬрддрди, рд╣рдореЗрдВ рдмрдЯрди рдХреЗ рд╕рд╛рде рд╡рд┐рднрд┐рдиреНрди рд╕рд░рд▓ рдЦрд┐рдбрд╝рдХрд┐рдпрд╛рдВ рдорд┐рд▓рддреА рд╣реИрдВ, рдЬреЛ рд╣рдореЗрдВ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдореИрд╕реЗрдЬрдмреЙрдХреНрд╕ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛:

рдпреБрдкреАрдбреА
рдПрдХ рддрд░реАрдХрд╛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рджреЗрд╢реА рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ, рдЕрдЧрд░ рдпрд╣ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдКрдкрд░ рдкреНрд░рд╕реНрддреБрдд рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛
рд╡рд░реНрд▓реНрдбрдмрдЯрд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдзрдиреНрдпрд╡рд╛рджред