C# WPF中的自定义列GridView(mvvm)
我有一个包含columnName及其值的列表。所以这个列表可能会有所不同。我的意思是,有时我可能有几个列,有不同的名字 结构是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; } } 下面是我如何将项目加载到网格中的
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;