c# - 如何检索点击的 ListView 行数据和隐藏 id 列

标签 c# wpf xaml

我想从单击的 ListViews 行中检索所有数据。如果可能的话,还要隐藏该 id 列。我尝试使用带有单击事件的命令并将该 id 字段传递到 commandParammeter 但没有成功。

还搜索了其他方法,但一无所获。仅供引用,我需要此功能将有关每个点击用户的详细信息显示到其他 listView 中,以便其他用户更容易查看此数据。

结论:需要获取点击的行数据,如果可能的话,还要隐藏该 id 列。

Xaml代码:

<ListView x:Name="lstUsers" ItemsSource="{Binding UserList,UpdateSourceTrigger=PropertyChanged}">
<ListView.View>
    <GridView x:Name="grdUsers">
        <GridViewColumn Header="Hidden_Id" DisplayMemberBinding="{Binding Id}"/>
        <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}"/>
        <GridViewColumn Header="Surname" DisplayMemberBinding="{Binding Surname}"/>
        <GridViewColumn Header="Age" DisplayMemberBinding="{Binding Age}"/>
    </GridView>
</ListView.View>
</ListView>

在我的 ViewModel 中放置了一个 UserList。任何一种优雅的方法都可以获取点击的行数据。

编辑

我查看了@BradleyDotNET 提供的链接,代码现在看起来像这样。

<ListView x:Name="lBoxUser" ItemsSource="{Binding UserList, UpdateSourceTrigger=PropertyChanged}" Width="300"           
                  IsSynchronizedWithCurrentItem="True"
                  Visibility="Visible" SelectionMode="Single"
                  SelectedValuePath="Id"
                  SelectionChanged="lBoxUser_SelectionChanged">
                  //this part hasn't changed
</ListView>

SelectedValuePath:将绑定(bind) userList 对象之一的属性。在我的例子中,它是“Id”。

SelectionChanged: 只需添加将在选择更改事件上执行并获取所有选定行数据的事件处理程序。我知道使用 MVVM 模式会更优雅,但命令不知何故对我不起作用。

同时显示“SelectedValue”。

<TextBlock Text="{Binding SelectedValue, ElementName=lBoxUser}"/>

编辑2

我找到了更简单的方法。

<ListView.SelectedItem>
   <Binding Path="UserProperty" UpdateSourceTrigger="PropertyChanged"/>
</ListView.SelectedItem>

只是在我的 ViewModel 中添加了 User 类属性,仅此而已。它获取所有选定的用户数据。现在它也算作 MVVM 模式。

最佳答案

一切顺利!

去掉“ID”列,很简单;删除它!

<ListView x:Name="lstUsers" ItemsSource="{Binding UserList,UpdateSourceTrigger=PropertyChanged}">
<ListView.View>
    <GridView x:Name="grdUsers">
        <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}"/>
        <GridViewColumn Header="Surname" DisplayMemberBinding="{Binding Surname}"/>
        <GridViewColumn Header="Age" DisplayMemberBinding="{Binding Age}"/>
    </GridView>
</ListView.View>
</ListView>

要获取当前选中项的信息,请查看 ListViewSelectedValue ( MSDN ) 属性,它将保存当前选中项的绑定(bind)对象.

关于c# - 如何检索点击的 ListView 行数据和隐藏 id 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25983236/

相关文章:

c# - CollectionAssert.AreEqual 失败。 (索引 0 处的元素不匹配。)

c# - 在 .NET 4 中最大化窗口时,窗口顶部和左侧值未正确更新

wpf - 有没有办法在页面上覆盖 WPF 中的 OnNavigatedTo?

wpf - 使用WPF M-V-VM模式显示弹出窗口的正确方法

wpf - 如何在 xaml 中复制 WPF 资源?

c# - 位图中的 TextRenderer.DrawText 与 OnPaintBackground

c# - Asp vnext IServiceCollection 存在于两个命名空间

xaml - 删除分组 ListView 上的粘性标题

.net - 将 XAML 控件从 WPF 应用程序复制到类库后出现问题

c# - 如何知道文本是否大于文本框?