/// <summary>
        /// MessageKey 添付プロパティ変更イベントハンドラ
        /// </summary>
        /// <param name="sender">イベント発行元</param>
        /// <param name="e">イベント引数</param>
        private static void OnMessageKeyPropertyChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
        {
            var w      = sender as Window ?? Window.GetWindow(sender);
            var key    = GetMessageKey(sender);
            var oldKey = e.OldValue as string;
            var newKey = e.NewValue as string;

            if (!string.IsNullOrEmpty(oldKey))
            {
                // メッセージ登録解除
                InteractionMessageListener.Unregister(oldKey);
            }
            if (!string.IsNullOrEmpty(newKey))
            {
                // メッセージ登録
                InteractionMessageListener.Register(newKey, message =>
                {
                    var m = message as SaveFileDialogMessage;
                    if (m == null)
                    {
                        throw new Exception("メッセージが " + message.GetType().FullName + " クラスです。YKToolkit.Controls.Behaviors.InteractionSaveFileDialogMessageBehavior クラスで扱えるメッセージは YKToolkit.Controls.SaveFileDialogMessage クラスまたはその派生クラスです。");
                    }
                    var dlg      = new SaveFileDialog();
                    dlg.Title    = m.Caption;
                    dlg.FileName = m.FileName;
                    dlg.Filter   = m.FileFilter;
                    var result   = dlg.ShowDialog(w);
                    return((result.HasValue && result.Value) ? dlg.FileName : null);
                });
            }
        }
Exemple #2
0
        /// <summary>
        /// MessageKey 添付プロパティ変更イベントハンドラ
        /// </summary>
        /// <param name="sender">イベント発行元</param>
        /// <param name="e">イベント引数</param>
        private static void OnMessageKeyPropertyChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
        {
            var w      = sender as Window ?? Window.GetWindow(sender);
            var key    = GetMessageKey(sender);
            var oldKey = e.OldValue as string;
            var newKey = e.NewValue as string;

            if (!string.IsNullOrEmpty(oldKey))
            {
                // メッセージ登録解除
                InteractionMessageListener.Unregister(oldKey);
            }
            if (!string.IsNullOrEmpty(newKey))
            {
                // メッセージ登録
                InteractionMessageListener.Register(newKey, message =>
                {
                    var m = message as DialogMessage;
                    if (m == null)
                    {
                        throw new Exception("メッセージが " + message.GetType().FullName + " クラスです。YKToolkit.Controls.Behaviors.InteractionDialogMessageBehavior クラスで扱えるメッセージは YKToolkit.Controls.DialogMessage クラスまたはその派生クラスです。");
                    }
                    return(YKToolkit.Controls.MessageBox.Show(m.Location == WindowStartupLocation.CenterOwner ? w : null, m.Message, m.Caption, m.DialogButton, m.DialogImage, m.ButtonCaptions));
                });
            }
        }