C# WPF ListView/GridView绑定

C# WPF ListView/GridView绑定,c#,wpf,xaml,gridview,visual-studio-extensions,C#,Wpf,Xaml,Gridview,Visual Studio Extensions,我试图制作一个简单的VS2017扩展,它获取一个对象并显示它。我将返回数据并在文本框中显示json,因此我知道数据返回正确。但出于某种原因,gv只显示了两次单词“id”,因为它们是数据集中的两条记录。我已经尝试了太多的东西,我失去了方向。另外,文件似乎到处都是 我相信这里至少有两个问题 1) XAML“绑定” 2) 将数据绑定或添加到LV 在此方面的任何帮助都将不胜感激 XAML 您需要设置ListView.ItemsSource private void PopulateListView()

我试图制作一个简单的VS2017扩展,它获取一个对象并显示它。我将返回数据并在文本框中显示json,因此我知道数据返回正确。但出于某种原因,gv只显示了两次单词“id”,因为它们是数据集中的两条记录。我已经尝试了太多的东西,我失去了方向。另外,文件似乎到处都是

我相信这里至少有两个问题

1) XAML“绑定”

2) 将数据绑定或添加到LV

在此方面的任何帮助都将不胜感激

XAML



您需要设置ListView.ItemsSource

private void PopulateListView()
{
    var l = GetPeople();
    txtJson.Text = JsonConvert.SerializeObject(l);

    LvIssues.ItemsSource= l;
}

<ListView x:Name="LvIssues">
            <ListView.View>
                <GridView>
                    <GridView.Columns>
                        <GridViewColumn Width="Auto" Header="Id"  DisplayMemberBinding="{Binding Id}"></GridViewColumn>
                    </GridView.Columns>
                </GridView>
            </ListView.View>
        </ListView>
private void PopulateListView()
{
var l=GetPeople();
txtJson.Text=JsonConvert.SerializedObject(l);
LvIssues.ItemsSource=l;
}

感谢您减少了代码,但您删除了我们需要查看的内容。需要查看您在哪里设置窗口的DataContext,您将其设置为什么,以及从窗口到listview的可视树。@我将更新xaml部分。我没有window.datacontext。也许这就是我的问题。我现在正试图找到“视觉树”。PopulateListView-此函数存在于何处?@AyyappanSubramanian位于DoWork.xaml.cs中。它是通过点击窗口从窗口发射的。我已经尝试更新以上内容。可视化树是您在XAML中编写的。在运行时,它被编译和实例化,结果称为逻辑树,因为它通常与XAML非常不同。此外,Snoop是一个在运行时检查绑定的好工具。这似乎会产生相同的结果。我想我在XAML部分遗漏了什么?也许是DisplayMemberBinding?就是这样。我知道我以前试过,一定是出了什么问题!非常感谢!
public class People
{
    public string Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

public partial class AllWorkVSControl : UserControl
{

    public AllWorkVSControl()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        var t = Issues.GetPeopleById("2");
        PopulateListView();
        MessageBox.Show(t);
    }

    private void PopulateListView()
    {
        var l = GetPeople();
        txtJson.Text = JsonConvert.SerializeObject(l);

        foreach (var p in l)
        {
            LvIssues.Items.Add(p);
        }
    }
}
private void PopulateListView()
{
    var l = GetPeople();
    txtJson.Text = JsonConvert.SerializeObject(l);

    LvIssues.ItemsSource= l;
}

<ListView x:Name="LvIssues">
            <ListView.View>
                <GridView>
                    <GridView.Columns>
                        <GridViewColumn Width="Auto" Header="Id"  DisplayMemberBinding="{Binding Id}"></GridViewColumn>
                    </GridView.Columns>
                </GridView>
            </ListView.View>
        </ListView>