我试图让WPF应用程序将其初始焦点设置为网格中的TextBox。该TextBox将其Text属性数据库设置为视图控制器,该视图控制器可能已经设置了文本,也可能没有。当设置了这个焦点,并且TextBox已经有了现有文本时,我希望选择该文本,这样您就可以通过键入立即编辑它。
我可以通过在Focus()事件的Loaded事件中执行一个Window调用来实现这一点,如下所示:
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等待数据绑定完成?
发布于 2016-02-17 12:34:18
为此,可以使用附加行为模式。它将看起来像:
<TextBox Text="{Binding Text}" local:SelectAllTextBoxBehavior.IsEnabled="True" />
SelectAllTextBoxBehavior代码可用这里
或使用混合SDK,详细信息这里
https://stackoverflow.com/questions/35442263
复制相似问题