1

所以我遇到了这个奇怪的问题。我有一个绑定到 ViewModel 的 TextBox :

<TextBox DockPanel.Dock="Right" Text="{Binding Path=FilterText, UpdateSourceTrigger=PropertyChanged}"/>

使用FilterText 的内容,我正在过滤一个ListBox(绑定到一个ObservableCollection)。

现在一切正常。但是每次击键后, this 的光标位置TextBox一直重置到开头。这仅发生在这个特定TextBox的 . 我有其他绑定TextBox工作得很好。

我用谷歌搜索了一下,发现这发生在.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
        }
    }
}

有人可以解释为什么会这样吗?在其他地方建议的解决方案包括更改UpdateSourceTriggerLostFocus使用附加行为来手动设置光标位置。还有其他更简单的解决方案吗?或者这只是一个错误?

4

1 回答 1

1

得到你的源代码,可以重现这个问题。然而,它不是那些 .NET 4 问题之一,因为它在 .NET 4.5 中也有同样的问题。实际上,这在 .NET 中根本不是问题。

ManageQuestionViewModel.cs

转变

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

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

你完成了 :)

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

于 2013-06-20T21:13:26.520 回答