【发布时间】:2016-02-16 20:22:30
【问题描述】:
我正在尝试让 WPF 应用程序将其初始焦点设置为网格内的 TextBox。 TextBox 将其 Text 属性数据绑定到可能已经或可能没有文本集的视图控制器。当设置此焦点并且 TextBox 已有文本时,我希望选择该文本,以便您只需键入即可立即对其进行编辑。
我可以通过在Window 的Loaded 事件内调用Focus() 来完成此操作,如下所示:
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();
}
我的问题是如何在不使用代码隐藏的情况下完成相同的事情,而是在 XAML 中完成。我曾尝试使用FocusManager,但它试图在数据绑定完成之前设置焦点,导致我的HighlightTextOnFocus 方法被调用在实际设置文本之前,什么也没做。
有没有办法强制FocusManager 等到数据绑定完成?
【问题讨论】:
-
您是否尝试在刚刚附加到 Loaded 事件的 EventTrigger 中使用它?听起来等价,只需 xaml 即可完成。
标签: c# wpf xaml data-binding