文本框丢失焦点不会在从顶部关闭的对话框上触发

时间:2012-12-10 07:34:46

标签: c# wpf

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

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

UpdateSourceTrigger=PropertyChanged

我确实更改了属性,但是在每次按键时都会在撤消堆栈中创建一个条目。我想仅在丢失焦点时更新属性,即使用户从对话框顶部开始关闭按钮时更改集。

3 个答案:

答案 0 :(得分:2)

请点击此链接,对此问题有帮助:UpdateSourceTrigger LostFocus OnClosing Problem

答案 1 :(得分: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 
        } 

答案 2 :(得分: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();
        }
    }