4

viewModelのプロパティにテキストボックスをバインドしています。ビューモデルで検証チェックを行い、ユーザーがデータに変更を加えたかどうかをチェックしました。したがって、終了時に、データベースへの変更をコミットするようにユーザーに要求します。

私が直面している問題は、テキストボックスの値を変更し、ユーザーが閉じるボタンダイアログを直接クリックすると、フォーカスが失われず、プロパティの値が変更されないことです。だから私は使用しました

UpdateSourceTrigger=PropertyChanged

プロパティを変更しますが、キーを押すたびにUNDOスタックにエントリを作成します。ユーザーがダイアログの上部から閉じるボタンをクリックしても、フォーカスが失われた場合、つまり1つのチェンジセットでのみプロパティを更新したいと思います。

4

2 に答える 2

0

変更があった場合に保存するようにユーザーに依頼し、閉じようとしますか?

        public MainWindow()
        {
            InitializeComponent(); 

            this.Closing += new System.ComponentModel.CancelEventHandler(MainWindow_Closing);
        }

        void MainWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            //ask the user to save , if needed to 
        } 
于 2012-12-10T08:06:36.977 に答える
0

以下を app.xaml.cs に追加できます。その後、 UpdateSourceTrigger=LostFocus が機能するはずです。

    protected override void OnStartup(StartupEventArgs e)
    {
        EventManager.RegisterClassHandler(typeof(Button), ButtonBase.ClickEvent, new RoutedEventHandler(ButtonClick));
         //...
     }

    private void ButtonClick(object sender, RoutedEventArgs e)
    {
        if (sender != null && sender is Button)
        {
            (sender as Button).Focus();
        }
    }
于 2012-12-10T11:31:09.030 に答える