0

我找到了一些文章,可以将数据放入带有 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>

对任何奇怪的格式或错误感到非常抱歉,就在几天前开始。这是填充列表时的图片,看起来与我期望的一样。

4

1 回答 1

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

于 2013-07-12T14:20:59.387 回答