所以我遇到了这个奇怪的问题。我有一个绑定到ViewModel的TextBox:
<TextBox DockPanel.Dock="Right" Text="{Binding Path=FilterText, UpdateSourceTrigger=PropertyChanged}"/>
使用FilterText的内容,我正在过滤ListBox
(绑定到ObservableCollection
)。
现在一切正常。但是每次击键后,此TextBox
的光标位置会一直重置到开头。而这只发生在这个特定的TextBox
上。我有其他绑定TextBox
正常工作。
我用Google搜索,发现这发生在.NET4.0
。但主要是当有字符串格式或字符串来进行双重转换时。但FilterText是简单的String
属性,任何地方都不包含double
变量。
以下是代码:
private String _filterText;
public String FilterText
{
get { return _filterText; }
set
{
if (_filterText != value)
{
_filterText = value;
RaisePropertyChanged("FilterText");
FilterList(); //this method works fine
}
}
}
有人可以解释为什么会这样吗?
其他地方建议的解决方案包括将UpdateSourceTrigger
更改为LostFocus
或使用附加行为手动设置光标位置。还有其他更简单的解决方案吗?或者这只是一个错误?
答案 0 :(得分:1)
获得了源代码并可以重现该问题。然而,它不是.NET 4问题中的一个,因为它在.NET 4.5中具有相同的问题。事实证明,它根本不是.NET中的问题。
在ManageQuestionViewModel.cs
切换
public void Initialize() {
...
this.ViewCore.FocusQuestionData();
}
到
public void Initialize() {
...
// this.ViewCore.FocusQuestionData();
}
你已经完成了:)
哦,你不需要你添加的ResetCaretBehavior
来尝试解决这个问题