首先,我是WPF编程的新手,我在WPF中的listview上遇到了一些困难。我已经有一个可观察集合,并希望在MsgBox中显示所选单元格的值。
我的问题是,我应该怎么做?
这对我不起作用:
mylistview.SelectedItem()
我的代码:
XAML
<ListView x:Name="mylistView" Margin="10,31,10,149.714" SelectionMode="Multiple" ItemsSource="{Binding}" Grid.ColumnSpan="3" Background="#FFA4A4A4" BorderThickness="2" BorderBrush="#FF6A6F77">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Path=Track}" Width="100" Header="Track"/>
<GridViewColumn Width="auto" Header="" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<Image Width="50" Height="50" VerticalAlignment="Center" HorizontalAlignment="Center" Source="{Binding Path=Image}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn DisplayMemberBinding="{Binding Path=Endung}" Width="100" Header=" Container"/>
<GridViewColumn DisplayMemberBinding="{Binding Path=Album}" Width="100" Header="Album"/>
<GridViewColumn DisplayMemberBinding="{Binding Path=Bitrate}" Width="100" Header="Bitrate"/>
<GridViewColumn DisplayMemberBinding="{Binding Path=Pfad}" Width="100" Header="Pfad"/>
</GridView>
</ListView.View>
</ListView>
代码隐藏
Dim files As New ObservableCollection(Of Austauscher)
Public Structure Austauscher
Private _track As String
Private _album As String
Private _pfad As String
Private _bitrate As String
Private _endung As String
Private _image As BitmapImage
Property Track() As String
Get
Return _track
End Get
Set(ByVal Value As String)
_track = Value
End Set
End Property
Property Album() As String
Get
Return _album
End Get
Set(ByVal Value As String)
_album = Value
End Set
End Property
Public Property Pfad As String
Get
Return _pfad
End Get
Set(ByVal Value As String)
_pfad = Value
End Set
End Property
Property Bitrate As String
Get
Return _bitrate
End Get
Set(ByVal Value As String)
_bitrate = Value
End Set
End Property
Property Endung As String
Get
Return _endung
End Get
Set(ByVal Value As String)
_endung = Value
End Set
End Property
Property Image As BitmapImage
Get
Return _image
End Get
Set(ByVal Value As BitmapImage)
_image = Value
End Set
End Property
End Structure
我添加文件:
files.Add(New Austauscher With {.Track = "Track", .Pfad = path, .Album = "Album", .Bitrate = "kbs", .Endung = "extension"})
问题出在listView上,因为你已经发现它缺少"selectedCell"属性。
您可能会发现您可以使用 datagrid 控件获得所需的功能,我制作了一个应该以与您的列表视图示例相同的方式工作的版本;
<DataGrid Name="myGridView" SelectionMode="Extended" SelectionUnit="Cell" ItemsSource="{Binding}" Grid.ColumnSpan="3" Background="#FFA4A4A4" BorderThickness="2" BorderBrush="#FF6A6F77" AutoGenerateColumns="False">
<DataGridTextColumn Header="Track" Binding="{Binding Path=Track}" Width="100"/>
<DataGridTemplateColumn Header="">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Width="50" Height="50" VerticalAlignment="Center" HorizontalAlignment="Center" Source="{Binding Path=Image}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Binding="{Binding Path=Endung}" Width="100" Header=" Container"/>
<DataGridTextColumn Binding="{Binding Path=Album}" Width="100" Header="Album"/>
<DataGridTextColumn Binding="{Binding Path=Bitrate}" Width="100" Header="Bitrate"/>
<DataGridTextColumn Binding="{Binding Path=Pfad}" Width="100" Header="Pfad"/>
</DataGrid>
数据网格提供了对选择的更多控制,并包含一个名为 selectedCell 的属性,它是一个集合,因为(如示例中所示)您可以选择许多单元格。如果只想有一个选定的单元格,则应将 SelectionMode 属性设置为单个(允许您仅选择单个项目并将 SelectionUnit(如我的示例)设置为 Cell。或者,您可以使用 CurrentCell 属性返回具有焦点的单元格;
myGridView.CurrentCell
我希望这有所帮助。