我找到了一些文章,要将数据放入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>
非常抱歉任何奇怪的格式或错误,几天前就开始了。 这是列表的图片,当它被填充时,看起来像我期望的那样。
答案 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>
我决定不使用自己的方法来创建数据表,但我会提供最快捷的方式链接。