gpt4 book ai didi

c# - 让 FocusManager 等到数据绑定(bind)完成?

转载 作者:太空宇宙 更新时间:2023-11-03 12:51:18 25 4
gpt4 key购买 nike

我正在尝试让 WPF 应用程序将其初始焦点设置到网格内部的 TextBox。该 TextBox 将其 Text 属性数据绑定(bind)到可能已设置或未设置文本的 View Controller 。设置此焦点并且 TextBox 已有文本时,我希望选中该文本,以便您只需键入即可立即对其进行编辑。

我可以通过在 WindowLoaded 事件中调用 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 但它试图在数据绑定(bind)完成之前设置焦点,导致我的 HighlightTextOnFocus 方法被调用 before 文本实际上是设置,一事无成。

有没有办法强制 FocusManager 等待数据绑定(bind)完成?

最佳答案

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

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

可用的 SelectAllTextBoxBehavior 代码 here

或者使用Blend SDK,详情here

关于c# - 让 FocusManager 等到数据绑定(bind)完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35442263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com