C# MVVM WPF列表框鼠标左键单击事件触发

C# MVVM WPF列表框鼠标左键单击事件触发,c#,wpf,mvvm,listbox,C#,Wpf,Mvvm,Listbox,我正在用MVVM架构构建一个WPF应用程序。在一个表单中,我有两个列表框,我想执行基于过滤器的搜索。我使用的是通用搜索文本框,因此我必须根据选择的列表框来区分搜索。请在下面找到我的示例列表框: <HeaderedContentControl Header="Visible Objects:" Height="120" Width="250" Margin="20,20,20,0"> <ListBox Name="lstObjects" Height="100" Marg

我正在用MVVM架构构建一个WPF应用程序。在一个表单中,我有两个列表框,我想执行基于过滤器的搜索。我使用的是通用搜索文本框,因此我必须根据选择的列表框来区分搜索。请在下面找到我的示例列表框:

<HeaderedContentControl Header="Visible Objects:" Height="120" Width="250" Margin="20,20,20,0">
    <ListBox Name="lstObjects" Height="100" Margin="5" ItemsSource="{Binding ProfileObjTypeToBind, Mode=OneWay}">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <CheckBox Name="chkbxVisibleObjects" Grid.Column="1"
                          Content="{Binding Path=Value}" IsChecked="{Binding Path=flag,Mode=TwoWay}">
                </CheckBox>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</HeaderedContentControl>
<HeaderedContentControl Header="User Groups to View:" Height="120" Width="250" Margin="20,10,20,10">
    <ListBox Name="lstGroups" Height="100" Margin="5" ItemsSource="{Binding ProfileUserGrpToBind, Mode=OneWay}">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <CheckBox Name="chkAllowedGroups" Content="{Binding Path=GroupName}" 
                              IsChecked="{Binding Path=flag,Mode=TwoWay}">
                </CheckBox>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</HeaderedContentControl>

我所要做的就是识别所选的列表框,并根据在textbox中输入的文本执行过滤。请帮帮我


提前多谢。

您不能有一个选定的列表框,也不能将内容写入文本框。您可以使用SelectionChanged或其他方法保存对上一个列表框的引用

private ListBox SelectedListBox = null;
private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    SelectedListBox = (sender as ListBox); 
}
一旦对上次选择的列表框进行了引用,您就可以将TextChanged事件添加到文本框中:

private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
    if (SelectedListBox == null)
        return;

    string searchText = (sender as TextBox).Text;
    SelectedListBox.Items.Filter = (i) => { return ((string)i).Contains(searchText); };  // Or any other condition required
}

你的样品丢失了,你能给我们看看你迄今为止试过的代码吗?包括您的XAML表单和ViewModel.cs文件,我假设它们将绑定到该表单。抱歉,我没有编辑代码。。。请参阅我对堆栈溢出的回答和问题,以获取过滤示例。