C# WPF中的自定义列GridView(mvvm)

C# WPF中的自定义列GridView(mvvm),c#,wpf,gridview,mvvm,C#,Wpf,Gridview,Mvvm,我有一个包含columnName及其值的列表。所以这个列表可能会有所不同。我的意思是,有时我可能有几个列,有不同的名字 结构是 public class LookupFields { public string FieldName { get; set; } public string FieldDisplayName { get; set; } public bool IsCandiateKey { get; set; } } 下面是我如何将项目加载到网格中的

我有一个包含columnName及其值的列表。所以这个列表可能会有所不同。我的意思是,有时我可能有几个列,有不同的名字

结构是

public class LookupFields
{
    public string FieldName { get; set; }
    public string FieldDisplayName { get; set; }

    public bool IsCandiateKey { get; set; }
}
下面是我如何将项目加载到网格中的

    private void InitializeGrid(ListView displayPanel, List<LookupFields> items)
    {
        //GridView gv = new GridView();

        GridLookupResult.AllowsColumnReorder = true;

        var columns = items;
        for (int i = 0; i < columns.Count; i++)
        {
            GridViewColumn col = new GridViewColumn();

            col.Header = new Binding ("[FieldName]");
            col.DisplayMemberBinding=  new Binding("[FieldDisplayName]");


            GridLookupResult.Columns.Add(col);
        }            
        displayPanel.View = GridLookupResult;
        displayPanel.DataContext = items;
        displayPanel.ItemsSource = items;
    }

DataGrid
有一个
ItemsSource
属性,您可以绑定到
DataView
对象
ItemsSource=“{Binding DataView}”

请显示您的视图模型。您记得将视图的DataContext设置为ViewModel吗?@KamilSolecki,谢谢您的回答。我添加了将项目加载到AllCustomLookupItems的代码。我想这就是你要求的嗯,这是否意味着你没有所有CustomLookupItems的属性?您能显示它在哪里实例化以及如何实例化吗?@KamilSolecki,我还添加了AllCustomLookupItems属性。将标题设置为
col.header=columns[I]。FieldName
我没有DataGrid,我只有Gridview。我通过将mydata转换为xml解决了这个问题,但我不喜欢这种方式。@ertan2002我的意思是使用DataGrid而不是使用ListView,并将其绑定到GridView对象。您可以使用DataTable从任何DataTable创建GridView。
 <ListView x:Name="listItems" Grid.Row="1" ItemsSource="{Binding AllCustomLookupItems}" SelectedItem="{Binding SelectedItem}" GridViewColumnHeader.Click="GridViewColumnHeaderClickedHandler" >
            <ListView.Resources>
                <Style TargetType="{x:Type ListViewItem}">
                    <EventSetter Event="MouseDoubleClick" Handler="HandleDoubleClick" />
                </Style>
            </ListView.Resources>
            <ListView.View>
                <!--<GridView x:Name="listItemsGrid">
                    <GridViewColumn Header="{Binding HeaderCode}" DisplayMemberBinding="{Binding Code}" Width="150"/>
                    <GridViewColumn Header="{Binding HeaderDesc2}" DisplayMemberBinding="{Binding Desc2}" Width="150" />
                    <GridViewColumn Header="{Binding HeaderDesc}" DisplayMemberBinding="{Binding Desc}" Width="350" />
                </GridView>-->
                <GridView x:Name="GridLookupResult">
                </GridView>    
            </ListView.View>
        </ListView>
 var list = proxy.LoadAll();

        foreach (var row in list)
        {

            CustomLookup cLookup = new CustomLookup();
            cLookup.Fields=new Dictionary<string, string>();
            foreach (var col in row.PropertyTable)
            {
                cLookup.Fields.Add(col.Key, col.Value);
            }           

        }



        AllCustomLookupItems = lookUpFields;// items.Select(s => s.Model).ToList();
        _candidateKey = candidateKey;
      //  AllLookupItems = items;


   public List<LookupFields> AllCustomLookupItems
    {
        get { return _allCustomLookupItems; }
        set
        {
            _allCustomLookupItems = value;
         //   SearchExecute(null);
        }
    }
   var customViewModel = (LookupCustomViewModel) dc;
   var items=customViewModel.AllCustomLookupItems;