我想从点击的ListViews行中检索所有数据。 如果可能的话,还要隐藏该id列。我尝试使用click事件的命令并传递该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 :将绑定其中一个userList对象的属性。就我而言,它是'Id'
SelectionChanged:只是添加将在选择更改事件上执行的事件处理程序并获取所有选定的行数据。我知道用户MVVM模式会更优雅,但命令不知何故对我不起作用。
同时显示'SelectedValue'。
<TextBlock Text="{Binding SelectedValue, ElementName=lBoxUser}"/>
EDIT2:
我找到了更简单的方法。
<ListView.SelectedItem>
<Binding Path="UserProperty" UpdateSourceTrigger="PropertyChanged"/>
</ListView.SelectedItem>
刚刚在我的ViewModel中添加了User类属性,这就是全部。它获取所有选定的用户数据。现在它也算作MVVM模式。
答案 0 :(得分:1)
你很顺利!
要摆脱“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>
要获取当前所选项目的信息,请查看SelectedValue
的{{1}}(MSDN)属性,它将保存当前所选项目的绑定对象。