2013-02-21 63 views
0

我试图从我的listview中提取信息,但似乎无法选择特定的dataset。当从这里提取信息时,我总是收回全部内容,但永远不会只读一套。获取所选值

我将拉动该行数据:

chartViewList2.SelectedItem 

我通过

private void getServices(string ComputerName) 
    { 
     chartListView2.Items.Clear(); 
     ServiceController[] services = ServiceController.GetServices(ComputerName); 

     foreach (ServiceController service in services) 
     { 
      chartListView2.Items.Add(new { Service = service.ServiceName, Status =  service.Status, Desc = service.DisplayName }); 
     } 
    } 

列表查看XML添加的信息列表视图:

ListView x:Name="chartListView2" Margin="12,59,46,6" 
       GridViewColumnHeader.Click="GridViewColumnHeaderClickedHandler2"> 
        <ListView.View> 
         <GridView> 
          <GridViewColumn Header="Service" DisplayMemberBinding="{Binding Service}" Width="100"/> 
          <GridViewColumn Header="Status" DisplayMemberBinding="{Binding Status}" Width="60"/> 
          <GridViewColumn Header="Desc" DisplayMemberBinding="{Binding Desc}" Width="190"/> 
         </GridView> 
        </ListView.View> 
       </ListView> 

所有我想要从这里得到服务名称字段。

任何帮助将不胜感激!

回答

1

反思可能对此有所帮助。

var item = chartViewList2.SelectedItem; 
var type = item.GetType(); 
var propertyInfo = type.GetProperty("Service"); 
var value = propertyInfo.GetValue(item, null); 

然后,您将在“值”变量中具有“服务”字段的值。

由于.NET 4和动态的关键字更短的方式中存在:

dynamic item = chartViewList2.SelectedItem; 
dynamic propertyValue = item.Service; 
+0

这完美地工作,谢谢。 – Saren 2013-02-22 01:13:04

0

如果您结合您的ListViewList<TypedObject>那么你可以这样做:

var item = chartViewList2.SelectedItem as TypedObject 
0

您可以设置ListViewSelectedvaluePathService并绑定到您的模型或使用ListViewSelectedValue访问。

例子:

<ListView x:Name="chartListView2" SelectedValuePath="Service" SelectedValue="{Binding SelectedServiceName}" >