在ListView c#中获取选定的值
本文关键字:获取 ListView | 更新日期: 2023-09-27 18:20:35
我只想在ListView中获取所选项目。
这是XAML:
<TabItem Header="Musique" Background="#1874CD" BorderBrush="#68838B">
<ListView x:Name="ListM" Width="Auto" Background="#D1EEEE" ItemsSource="{Binding Path=MediaCollection}" Margin="-8,-0.877,-1,-2.925" SelectionChanged="ListM_SelectionChanged">
<ListView.View>
<GridView AllowsColumnReorder="True" >
<GridViewColumn Header="" Width="Auto" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<Image Name="IconImage" Source="{Binding IconUri}" Panel.ZIndex="2" Width="15" Height="15"></Image>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn DisplayMemberBinding="{Binding Title}" Header="Titre" Width="auto" />
<GridViewColumn DisplayMemberBinding="{Binding Composer}" Header="Artiste" Width="70" />
<GridViewColumn DisplayMemberBinding="{Binding Length}" Header="Durée" Width="50" />
<GridViewColumn DisplayMemberBinding="{Binding Album}" Header="Album" Width="70" />
</GridView>
</ListView.View>
</ListView>
我插入了带有这段代码的项目:
ListM.Items.Add(new ListGrid() { IconUri = imagemp3.Source, Title = Ftitle, Length = duration, Album = Falbum, Composer = Fcomposer });
当我在列表中选择一个项目时,我需要获得这些详细信息(Title
、Length
…)。我试过了,但遇到了很多问题,但仍然不起作用。
使用所选项目:
SelectedItems是一组选定的行,
如果你只想获得标题:
string age = ListM.SelectedItems[0].SubItems[0].Text;
如果你想得到所有的细节:
ListM.SelectedItems[0]返回一个对象。您首先需要将其强制转换为特定类型,然后才能访问其成员。创建一个Media类(Title,Composer…),然后:
private void getSelectedIteminListView(object sender, MouseButtonEventArgs e)
{
Media media = (Media)ListM.SelectedItems[0];
}
不要忘记添加事件:
ListM.DoubleClick += getSelectedIteminListView;
只需将SelectedItem
转换为您的类型:
private void ListM_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var listgrid = (ListGrid)ListM.SelectedItem;
}
但你好像在混什么。您正在使用DataBinding(ItemsSource
),但也手动添加项目。最好只使用DataBinding,方法是将项添加到ViewModel中的MediaCollection
,并将SelectedItem
绑定到ViewModel的另一个属性:
在XAML中:
SelectedItem="{Binding SelectedItem}"
我终于收听了@M.REJEB
private void ListM_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
ListGrid media = (ListGrid)ListM.SelectedItems[0];
string age = media.Title;
MessageBox.Show("Selected : " + age);
}
它适用于此类:
class ListGrid
{
public string Path { get; set; }
public string Title { get; set; }
public System.TimeSpan Length { get; set; }
public string Album { get; set; }
public string Composer { get; set; }
public System.Windows.Media.ImageSource IconUri { get; set; }
}