4

我有一个文本框绑定到 viewModel 中的一个属性。我在 viewmodel 中进行了验证检查,并检查用户是否对数据进行了任何更改。所以在退出时它要求用户提交对数据库的更改。

我面临的问题是当我更改文本框中的值并且用户直接单击关闭按钮对话框时,不会发生丢失焦点并且属性中的值不会更改。所以我用

UpdateSourceTrigger=PropertyChanged

我确实更改了属性,但在每次按键时都会在撤消堆栈中创建一个条目。我只想在失去焦点时更新属性,即一个变更集,即使用户单击对话框顶部的关闭按钮也是如此。

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 回答