尝试返回listview中的第一列值

时间:2014-09-18 13:49:32

标签: c# wpf xaml listview

我正在尝试返回列表视图DriverListView中的第一列:

enter image description here

但我得到的只是:

enter image description here

到目前为止,这是我的代码:

    private void DriverListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (DriverListView.SelectedItems.Count == 0) return;
        MessageBox.Show(DriverListView.SelectedItems[0].ToString());
    }

的ListView:

<ListView x:Name="DriverListView" HorizontalAlignment="Left" Height="627" Margin="15,13,0,0" Grid.Row="1" VerticalAlignment="Top" Width="577" Grid.ColumnSpan="3" FontSize="14" SelectionChanged="DriverListView_SelectionChanged">
            <ListView.View>
                <GridView>
                    <GridViewColumn Width="100" Header="Driver" DisplayMemberBinding="{Binding DNo}"  />
                    <GridViewColumn Width="150" Header="Paid Date" DisplayMemberBinding="{Binding PDate}"  />
                    <GridViewColumn Width="100" Header="Rent Paid" DisplayMemberBinding="{Binding PRent}"  />
                    <GridViewColumn Width="125" Header="Status" DisplayMemberBinding="{Binding Status}"  />
                </GridView>
            </ListView.View>
        </ListView>

可能出现什么问题?它似乎是返回对象而不是文本值,这是不正确的。

1 个答案:

答案 0 :(得分:1)

我假设您的DriverListView是一个继承自ListView的类。 ListView.Items接受要存储的对象。因此,如果您使用DriverListView.SelectedItems [0],您将获得ListView中的第一个选定行。尝试将其转换为正确的类型。

例如:

public class MyClass
{
    public string MyProperty1
    {
        get;
        set;
    }

    public string MyProperty2
    {
        get;
        set;
    }

    public MyClass(string prop1, string prop2)
    {
        MyProperty1 = prop1;
        MyProperty2 = prop2;
    }
}

我假设您已将MyClass的对象添加到DriversListView

DriversListView.Items.Add(new MyClass("hello", "world"));

因此,您的DriverListView包含MyClass类的多个对象。所选的一个存储在DriverListView.SelectedItems Collection的第一项中。 因此,您可以将其强制转换为MyClass以读取属性。

MyClass selectedItem = (MyClass)DriverListView.SelectedItems[0];

现在你可以使用

selectedItem.MyProperty1