2013-09-28 94 views
0

我在XAML中創建了一個ListView,但我不知道如何獲取選定行的數據。誰能幫我?從ListView獲取數據

這是我的XAML:

<ListView x:Name="myListView" Margin="10,71,10,45" SelectionChanged="Selector_OnSelectionChanged"> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn Header="Test1" DisplayMemberBinding="{Binding test1}" Width="400" /> 
      <GridViewColumn Header="Test2" DisplayMemberBinding="{Binding test2}" Width="120"/> 
      <GridViewColumn Header="Test3" DisplayMemberBinding="{Binding test3}" Width="100"/> 
     </GridView> 
    </ListView.View> 
</ListView> 

回答

1

你需要做以下

1設置了數據結構:可以在後面或XAML代碼做到這一點。數據必須是集合類型,集合類型爲test1/test2/test3數據成員。

var data = new ObservableCollection<Test>(); 
data.Add(new Test {test1="abc", test2="abc2", test3="abc3"}); 
data.Add(new Test {test1="bc", test2="bc2", test3="bc3"}); 
data.Add(new Test {test1="c", test2="c2", test3="c3"}); 

Data = data 

public ObservableCollection<Test> Data {get;set;} 

通過屬性

2需要分配集合(設置在步驟1)到的ListView DataContext的公開數據。 (最好在XAML,但在代碼隱藏來實現)

<ListView x:Name="myListView" DataContext={Binding Data} Margin="10,71,10,45" SelectionChanged="Selector_OnSelectionChanged" > 

3您還需要查看Model類(含Data)關聯起來,查看

<Application 
    x:Class="BuildAssistantUI.App" 
    xmlns:local="clr-namespace:MainViewModel" 
    StartupUri="MainWindow.xaml" 
    > 

    <Application.Resources> 
     <local:MainViewModel x:Key="MainViewModel" /> 
    </Application.Resources> 


<Window DataContext="{StaticResource MainViewModel}" > 

一旦上述步驟完成後,你應該看到ListView中的數據。


關於如何從匿名類型的對象訪問屬性,這是通過反射完成的。

下面是一個例子

object item = new {test1="test1a", test2="test2a", test3="test3a"}; 
var propertyInfo = item.GetType().GetProperty("test1"); // propertyInfo for test1 
var test1Value = propertyInfo.GetValue(item, null); 
+0

謝謝,但我知道如何添加數據。我需要知道如何我可以通過代碼 – Eknoes

+0

獲得所選行的數據我想我誤解了這個問題。您可以使用[ListView.SelectedItems](http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.selecteditems.aspx)屬性 – Tilak

+0

使用此代碼,我可以獲取所選的完整數據row:myListView.SelectedItems [0];我如何獲得一列的數據? – Eknoes