我试图找出在第一次加载控件时选择 TextBox 中所有文本的最佳方法。我正在使用 MVVM 模式,因此我将 TextBox 的 Text 属性使用双向绑定到我的 ViewModel 上的字符串。我正在使用这个 TextBox 来“重命名”已经有名称的东西,所以我想在控件加载时选择旧名称,以便可以轻松地删除和重命名它。初始文本(旧名称)通过在我的 ViewModel 中设置来填充,然后在数据绑定完成后反映在 TextBox 中。
我真正想做的是这样的:
<TextBox x:Name="NameTextBox" Text="{Binding NameViewModelProperty, Mode=TwoWay}" SelectedText="{Binding NameViewModelProperty, Mode=OneTime}" />
基本上只需将整个文本用作具有 OneTime 绑定的 SelectedText。但是,这不起作用,因为 SelectedText 不是 DependencyProperty。
我并不完全反对在我的视图的代码隐藏中添加选择代码,但在这种情况下我的问题是确定初始文本绑定何时完成。TextBox 总是开始为空,因此不能在构造函数中完成。TextChanged 事件似乎仅在用户输入新文本时触发,而不是在文本从 ViewModel 的初始绑定更改时触发。
任何想法都非常感谢!