async Task <string[]> Show(SystemDialog d, Window parent) { var model = new ManagedFileChooserViewModel((FileSystemDialog)d); var dialog = new T { Content = new ManagedFileChooser(), DataContext = model }; dialog.Closed += delegate { model.Cancel(); }; string[] result = null; model.CompleteRequested += items => { result = items; dialog.Close(); }; model.CancelRequested += dialog.Close; await dialog.ShowDialog <object>(parent); return(result); }
static void SystemDialogOnClickCancel(SystemDialog systemDialog) { // class SystemDialog { private void OnClickCancel(); } MethodInfo methodInfo = typeof(SystemDialog).GetMethod( "OnClickCancel", BindingFlags.NonPublic | BindingFlags.Instance, null, new Type[] { }, null ); methodInfo.Invoke(systemDialog, new object[] { }); }
// ダイアログの「OK」「Cancel」をクリックする bool UpdateDialogClick() { SystemDialog systemDialog = GameMain.Instance.SysDlg; if (systemDialog.gameObject.activeSelf) { if (Input.GetKeyDown(kcMessageWindowClick)) { SystemDialogOnClickOk(systemDialog); return(true); } if (Input.GetKeyDown(kcCancel)) { SystemDialogOnClickCancel(systemDialog); return(true); } } return(false); }
/// <summary> /// show as an asynchronous operation. /// </summary> /// <param name="d">The d.</param> /// <param name="parent">The parent.</param> /// <param name="options">The options.</param> /// <returns>System.String[].</returns> private async Task <string[]> ShowAsync(SystemDialog d, Window parent, ManagedFileDialogOptions options = null) { var model = new ManagedDialogViewModel((FileSystemDialog)d, options ?? new ManagedFileDialogOptions()); var langService = DIResolver.Get <ILanguagesService>(); var language = langService.GetSelected(); var fontResolver = DIResolver.Get <IFontFamilyManager>(); var font = fontResolver.ResolveFontFamily(language.Font); var dialog = new T { Icon = StaticResources.GetAppIcon(), Content = new ManagedDialog(), Title = d.Title, DataContext = model, SizeToContent = SizeToContent.Width, WindowStartupLocation = WindowStartupLocation.CenterOwner, FontFamily = font.GetFontFamily(), Height = 700 }; dialog.Closed += delegate { model.Cancel(); }; string[] result = null; model.CompleteRequested += items => { result = items; dialog.Close(); }; model.CancelRequested += dialog.Close; await dialog.ShowDialog <object>(parent); return(result); }
static void SystemDialogOnClickOk(SystemDialog systemDialog) { // class SystemDialog { private void OnClickOk(); } MethodInfo methodInfo = typeof(SystemDialog).GetMethod( "OnClickOk", BindingFlags.NonPublic | BindingFlags.Instance, null, new Type[] { }, null ); methodInfo.Invoke(systemDialog, new object[] { }); }
async Task <string[]> Show(SystemDialog d, Window parent, ManagedFileDialogOptions options = null) { var model = new ManagedFileChooserViewModel((FileSystemDialog)d, options ?? new ManagedFileDialogOptions()); var dialog = new T { Content = new ManagedFileChooser(), Title = d.Title, DataContext = model }; dialog.Closed += delegate { model.Cancel(); }; string[] result = null; model.CompleteRequested += items => { result = items; dialog.Close(); }; model.OverwritePrompt += async(filename) => { Window overwritePromptDialog = new Window() { Title = "Confirm Save As", SizeToContent = SizeToContent.WidthAndHeight, WindowStartupLocation = WindowStartupLocation.CenterOwner, Padding = new Thickness(10), MinWidth = 270 }; string name = Path.GetFileName(filename); var panel = new DockPanel() { HorizontalAlignment = Layout.HorizontalAlignment.Stretch }; var label = new Label() { Content = $"{name} already exists.\nDo you want to replace it?" }; panel.Children.Add(label); DockPanel.SetDock(label, Dock.Top); var buttonPanel = new StackPanel() { HorizontalAlignment = Layout.HorizontalAlignment.Right, Orientation = Layout.Orientation.Horizontal, Spacing = 10 }; var button = new Button() { Content = "Yes", HorizontalAlignment = Layout.HorizontalAlignment.Right }; button.Click += (sender, args) => { result = new string[1] { filename }; overwritePromptDialog.Close(); dialog.Close(); }; buttonPanel.Children.Add(button); button = new Button() { Content = "No", HorizontalAlignment = Layout.HorizontalAlignment.Right }; button.Click += (sender, args) => { overwritePromptDialog.Close(); }; buttonPanel.Children.Add(button); panel.Children.Add(buttonPanel); DockPanel.SetDock(buttonPanel, Dock.Bottom); overwritePromptDialog.Content = panel; await overwritePromptDialog.ShowDialog(dialog); }; model.CancelRequested += dialog.Close; await dialog.ShowDialog <object>(parent); return(result); }