让FocusManager等到数据绑定完成后?

时间:2016-02-16 20:22:30

标签: c# wpf xaml data-binding

我正在尝试使用WPF应用程序将其初始焦点设置为网格内的TextBoxTextBoxText属性数据绑定到视图控制器,该视图控制器可能已经或可能没有文本集。设置此焦点并且TextBox已有现有文本后,我希望选择该文本,以便您只需输入即可立即编辑。

我可以通过在Focus()的{​​{1}}事件中进行Loaded调用来完成此操作,如下所示:

Window

我的问题是如何在不使用代码隐藏的情况下完成同样的事情,而是在XAML中完成。我尝试过使用public void HighlightTextOnFocus(object sender, RoutedEventArgs e) { var senderBox = (TextBox)sender; senderBox.SelectionStart = 0; senderBox.SelectionLength = senderBox.Text.Length; } private void EditEntryView_OnLoaded(object sender, RoutedEventArgs e) { TotalHoursBox.Focus(); } ,但尝试在数据绑定完成之前设置焦点,导致我的FocusManager方法在实际设置文本之前被调用,什么都不做。< / p>

有没有办法强制HighlightTextOnFocus等待数据绑定完成?

1 个答案:

答案 0 :(得分:1)

您可以使用附加行为模式。它看起来像:

<TextBox Text="{Binding Text}" local:SelectAllTextBoxBehavior.IsEnabled="True" />

SelectAllTextBoxBehavior代码here

或使用Blend SDK,详细信息here