c# - listview.selectionchanged,我可以让它在我每次点击一个项目时触发吗?

标签 c# wpf listview selectionchanged

有没有办法让每次单击 ListView 中的选择时触发 selectionchanged 事件,而不是仅在它更改时触发?

例如,假设我有一个 ListView ,其中只有一个对象。用户单击该对象,该对象包含填充下面某些文本框的信息。用户开始更改这些文本框(未绑定(bind)到对象)中的一些值。然后他们决定不想要那些文本框中的内容,因此他们想将所有内容重置为 ListView 中对象中的内容。但是当他们单击 ListView 中的一个对象时,没有任何反应,因为选择没有改变。

希望这是有道理的。有人知道我该如何解决这个问题吗?

最佳答案

如果项目已被选中,则 ListView.SelectionChanged 和 ListViewItem.Selected 事件不会重新触发。如果您需要重新触发它,您可以在事件触发时“取消选择”该项目。

private void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    foreach (var item in e.AddedItems.OfType<ListViewItem>())
    {
        Trace.WriteLine("ListViewItem Selected");
        item.IsSelected = false;
    }
}

因此允许您重新选择它广告恶心。但是,如果您不需要实际选择,那么您应该使用 ItemsControl .

如果您确实想保持项目的选择能力,那么您应该考虑注册一个不同于 ListView.SelectionChanged 或 ListView.Selected 的事件。 PreviewMouseDown 对此效果很好,就像初始项目选择一样,我们希望它在左击和右击时都发生。我们可以将它附加到单个 ListViewItem,但由于列表可能在某个时候获得更多项目,我们可以使用 ListView 的 ItemContainerStyle 属性将它分配给所有项目。

<ListView SelectionChanged="ListView_SelectionChanged">
    <ListView.ItemContainerStyle>
        <Style TargetType="{x:Type ListViewItem}">
            <EventSetter Event="PreviewMouseDown"
                         Handler="ListViewItem_PreviewMouseDown" />
        </Style>
    </ListView.ItemContainerStyle>
    <ListViewItem>Item 1</ListViewItem>
    <ListViewItem>Item 2</ListViewItem>
    <ListViewItem>Item 3</ListViewItem>
    <ListViewItem>Item 4</ListViewItem>
</ListView>


private void ListViewItem_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
    Trace.WriteLine("ListViewItem Clicked: " + (sender as ListViewItem).Content);
}

关于c# - listview.selectionchanged,我可以让它在我每次点击一个项目时触发吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1089321/

相关文章:

c# - 如何从 C# 调用 C++ 类

c# - .Net Entity Framework 到 CSV

C# - 如何使我的程序集强命名?

c# - 从 backgroundworker 获取错误值的进度

C# WPF gif 黑色背景

c# - WPF PasswordBox 中密码的安全优势不可绑定(bind)?

c# - ResourceDictionary.Source 属性中的 MarkupExtension

android - 为检索到的 XML 数据过滤 SPINNER

c# - 我如何在内部嵌套 ListView 的布局模板中获取 ListView 的外部数据项的访问属性

java - 自定义ListView不显示任何内容