0

から情報を取得しようとしてlistviewいますが、特定のを選択できないようですdataset。これから情報を引き出すとき、私は常に内容全体を取り戻しますが、1セットだけを読み取ることはできません。

行データを次のようにプルします。

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>

これから取得したいのは、サービス名フィールドに戻ることだけです。

どんな助けでもありがたいです!

4

3 に答える 3

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;
于 2013-02-21T23:46:20.630 に答える
0

にバインドListViewしている場合List<TypedObject>は、これを行うことができます:

var item = chartViewList2.SelectedItem as TypedObject
于 2013-02-22T00:01:30.710 に答える
0

を使用して、モデルまたはアクセスにを設定しListView SelectedvaluePathてバインドできます。ServiceListView SelectedValue

例:

   <ListView x:Name="chartListView2" SelectedValuePath="Service" SelectedValue="{Binding SelectedServiceName}" >
于 2013-02-22T00:02:39.313 に答える