获取所选值

时间:2013-02-21 23:36:44

标签: c# .net wpf listview

我正在尝试从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>

我想从中得到的就是服务名称字段。

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:1)

这里的反思可能有所帮助。

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

然后,您将在'value'变量中获得Service字段的值。

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

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

答案 1 :(得分:0)

如果您将ListView绑定到List<TypedObject>,则可以执行此操作:

var item = chartViewList2.SelectedItem as TypedObject

答案 2 :(得分:0)

您可以将ListView SelectedvaluePath设置为Service并使用ListView SelectedValue绑定到您的模型或访问权限。

示例:

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