C#使用GridView从ListView中检索数据

时间:2013-07-11 20:01:00

标签: c# xaml listview

我找到了一些文章,要将数据放入listview,并在gridviewcolums上使用数据绑定,但是当从列表中选择一行时我需要检索此数据,这是我必须填写列表的代码和“尝试”检索数据。 据我所知,请将这些数据放入列表视图中的方法非常不同,我认为我的问题是我不知道用XAML格式化这种方式检索它的正确方法。

private void Button_Click_1(object sender, RoutedEventArgs e)
{ // This is When a button is clicked to populate the List
    Operate op = new Operate();
    List<object> users = op.GetUser();
    if (users != null)
    {
        ResultsView.Items.Clear();
        foreach (UserPrincipal user in users)
        {
            ResultsView.Items.Add(new {Col1 = user.GivenName, Col2 = user.Surname, Col3 = user.SamAccountName});
        }
    }
}
private void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{ // This is When a line is selected and should get the info from the line
    if (ResultsView.SelectedItem != null)
    {
        string sel = ResultsView.SelectedItem.Col1;
    }
}

这是列表的XAML

<ListView
    x:Name="ResultsView"
    Margin="5,5,5,5"
    SelectionMode="Single"
    SelectionChanged="ListView_SelectionChanged">
    <ListView.View>
        <GridView>
            <GridViewColumn Width="100" Header="H1" DisplayMemberBinding="{Binding Col1}"/>
            <GridViewColumn Width="100" Header="H2" DisplayMemberBinding="{Binding Col2}"/>
            <GridViewColumn Width="100" Header="H3" DisplayMemberBinding="{Binding Col3}"/>
        </GridView>
    </ListView.View>
</ListView>

非常抱歉任何奇怪的格式或错误,几天前就开始了。 这是列表的图片,当它被填充时,看起来像我期望的那样。

1 个答案:

答案 0 :(得分:0)

我的答案有点在Travis J的评论中。我知道我可能需要以不同的方式创建此表,以便SelectedItem的输出不会以匿名类型的形式出现。所以我重做了表的构建方式,现在正在使用DataTable。

private void Button_Click_1(object sender, RoutedEventArgs e)
{
    Operate op = new Operate();
    DataTable users = op.GetUser();
    if (users != null)
    {
        ResultsView.ItemsSource = users.DefaultView;
    }
}
private void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{

    if (ResultsView.SelectedItem != null)
    {
        DataRowView line = ResultsView.SelectedItem as DataRowView;
        string stuff = line.Row.ItemArray[2].ToString();

        MessageBox.Show(stuff);
    }
}

这使得需要更改XAML,以便绑定从数据表中寻找路径。

<ListView
    x:Name="ResultsView"
    Margin="5,5,5,5"
    SelectionMode="Single"
    SelectionChanged="ListView_SelectionChanged">
    <ListView.View>
        <GridView>
            <GridViewColumn Width="100" Header="H1" DisplayMemberBinding="{Binding Path=FirstName}"/>
            <GridViewColumn Width="100" Header="H2" DisplayMemberBinding="{Binding Path=LastName}"/>
            <GridViewColumn Width="100" Header="H3" DisplayMemberBinding="{Binding Path=UserName}"/>
        </GridView>
    </ListView.View>
</ListView>

我决定不使用自己的方法来创建数据表,但我会提供最快捷的方式链接。

http://www.dotnetperls.com/datatable