TextBox and default Button binding does update too late

前端 未结 3 1106
[愿得一人]
[愿得一人] 2020-11-29 09:01

I\'ve got a simple WPF dialog with these two controls:


相关标签:
3条回答
  • 2020-11-29 09:27

    Add the UpdateSourceTrigger to your TextBox with the value PropertyChanged. The default behavior of the Textbox is to update the source, when it´s lost focus.

    <TextBox Text="{Binding MyText, UpdateSourceTrigger=PropertyChanged}"/>
    
    0 讨论(0)
  • 2020-11-29 09:35

    One Solution ist, to create your own Class OKButton that calls Me.Focus in the OnClick-Method. This will be called before the Click_Event and before any Command that is bound to the button. You just have to remember to use an OKButton instead of setting IsDefault=True

    Public Class OKButton
      Inherits System.Windows.Controls.Button
    
      Public Sub New()
      MyBase.New()
      Me.Content = "OK"
      Me.IsDefault = True
      End Sub
    
      Protected Overrides Sub OnClick()
      Me.Focus()
      MyBase.OnClick()
      End Sub
    End Class
    
    0 讨论(0)
  • 2020-11-29 09:38

    Try this. This code moves focus on the button clicked. Thus binding completes before command processed.

        public App()
        {
            EventManager.RegisterClassHandler(typeof(Button), Button.ClickEvent, new RoutedEventHandler(GenericButtonClickHandler));
        }
    
        void GenericButtonClickHandler(object sender, RoutedEventArgs e)
        {
            var button = sender as Button;
            if (button == null)
                return;
            if (button.IsDefault)
                button.Focus();
        }
    
    0 讨论(0)
提交回复
热议问题