C# 删除时未触发WPF textbox textChanged事件

C# 删除时未触发WPF textbox textChanged事件,c#,wpf,xaml,visual-studio-2013,C#,Wpf,Xaml,Visual Studio 2013,我正在开发一个VisualStudio插件项目。我发现WPF窗口中的文本框有一个非常奇怪的问题 当Visual Studio中没有打开代码文件时,在文本框中键入和删除都可以。但是,当在VisualStudio中打开代码文件时,我只能在文本框中键入。按“backspace”将删除代码文件中的文本,即使文本框具有焦点。按“backspace”时,不会触发textChanged事件 XAML: C#: private string reportPath=null; 私有IEnumerable re

我正在开发一个VisualStudio插件项目。我发现WPF窗口中的文本框有一个非常奇怪的问题

当Visual Studio中没有打开代码文件时,在文本框中键入和删除都可以。但是,当在VisualStudio中打开代码文件时,我只能在文本框中键入。按“backspace”将删除代码文件中的文本,即使文本框具有焦点。按“backspace”时,不会触发textChanged事件

XAML:


C#:

private string reportPath=null;
私有IEnumerable resultCollection;
CollectionView结果CollectionView;
public resultWindow(IEnumerable resultCollection,string reportPath)
{
初始化组件();
this.reportPath=reportPath;
//this.DataContext=this;
this.resultCollection=resultCollection;
listViewResults.ItemsSource=resultCollection;
CollectionView结果视图=(CollectionView)CollectionViewSource.GetDefaultView(listViewResults.ItemsSource);
resultView.Filter=ResultFilter;
}
私有布尔结果过滤器(对象项)
{
if(string.IsNullOrEmpty(textBoxSearch.Text))
返回true;
其他的
return((作为caiassresult的项).info.IndexOf(textBoxSearch.Text,StringComparison.OrdinalIgnoreCase)>=0);
}
私有void textBoxSearch\u TextChanged(对象发送者,System.Windows.Controls.textchangedventargs e)
{
CollectionViewSource.GetDefaultView(listViewResults.ItemsSource.Refresh();
}

尝试使用此事件:PreviewKeyDown

使用带有属性更改通知的绑定!事件很快就会重新启动VS?
<TextBox Name="textBoxSearch" 
DockPanel.Dock="Right" Margin="10" Width="400" BorderThickness="0" 
TextChanged="textBoxSearch_TextChanged" Focusable="True" />
private string reportPath = null;
private IEnumerable<CaiasResult> resultCollection;
CollectionView resultCollectionView;

public resultWindow(IEnumerable<CaiasResult> resultCollection, string reportPath)
{
    InitializeComponent();
    this.reportPath = reportPath;
    //this.DataContext = this;
    this.resultCollection= resultCollection;
    listViewResults.ItemsSource = resultCollection;
    CollectionView resultView = (CollectionView)CollectionViewSource.GetDefaultView(listViewResults.ItemsSource);
    resultView.Filter = ResultFilter;
}

private bool ResultFilter(object item)
{
    if (string.IsNullOrEmpty(textBoxSearch.Text))
        return true;
    else
        return ((item as CaiasResult).info.IndexOf(textBoxSearch.Text, StringComparison.OrdinalIgnoreCase) >= 0);
}

private void textBoxSearch_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e)
{
    CollectionViewSource.GetDefaultView(listViewResults.ItemsSource).Refresh();

}