2016-04-25 179 views
0

首先,我是WPF編程新手,我在WPF中使用listview有一些困難。 我已經有一個ObservableCollection並且想要在MsgBox中顯示所選單元格的值。WPF VB.net Listview如何顯示選中單元格的值

我的問題是,我該怎麼做?

這並沒有爲我工作:

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"}) 

回答

0

問題在於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> 

數據網格在您的選擇提供了更多的控制權,幷包含一個名爲selectedCells屬性,它是一個集合,因爲(在你的例子),你可以選擇許多細胞。如果你想只有一個選定的單元格,那麼你應該將SelectionMode屬性設置爲single(允許你只選擇一個項目並將SelectionUnit設置爲Cell),或者你可以使用CurrentCell屬性返回具有細胞集中;

myGridView.CurrentCell 

我希望這有助於

相關問題