WPF数据绑定TextBox光标位置重置。可能的错误?

时间:2013-06-20 11:20:52

标签: wpf data-binding textbox cursor-position

所以我遇到了这个奇怪的问题。我有一个绑定到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或使用附加行为手动设置光标位置。还有其他更简单的解决方案吗?或者这只是一个错误?

1 个答案:

答案 0 :(得分:1)

获得了源代码并可以重现该问题。然而,它不是.NET 4问题中的一个,因为它在.NET 4.5中具有相同的问题。事实证明,它根本不是.NET中的问题。

ManageQuestionViewModel.cs

切换

public void Initialize() {
...
  this.ViewCore.FocusQuestionData();
}

public void Initialize() {
...
  // this.ViewCore.FocusQuestionData();
}

你已经完成了:)

哦,你不需要你添加的ResetCaretBehavior来尝试解决这个问题