我想从单击的 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>
要获取当前选中项的信息,请查看 ListView
的 SelectedValue
( MSDN ) 属性,它将保存当前选中项的绑定(bind)对象.
关于c# - 如何检索点击的 ListView 行数据和隐藏 id 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25983236/