WPF VB.net 列表视图 如何显示所选单元格的值



首先,我是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

我希望这有所帮助。

最新更新