关于DataGrid AutoGenerateColumns的大多数帖子似乎都涉及如何绕过默认行为。不幸的是,默认情况下我正在努力。我的自动生成的列不显示在Datagrid中
我有几个数据库表使用实体框架6.0创建,并希望显示它们在我的视图使用一个和所有表相同的Datagrid,并自动生成列。期望的结果:对于在运行时绑定的特定于类的Viewmodel,显示包含标题和至少一行的列。
XAML视图的用户控制:
<UserControl.Resources>
<DataTemplate x:Key="TableDataTemplate">
<DataGrid
AutoGenerateColumns="True"
GridLinesVisibility="All"
HorizontalScrollBarVisibility="Visible"
VerticalScrollBarVisibility="Visible">
</DataGrid>
</DataTemplate>
</UserControl.Resources>
<StackPanel Height="720" Width="980">
<!-- shows user which menu item was chosen -->
<TextBlock Text="{Binding DisplayName}"/>
<!-- defines the Input data grid for adding to DB table -->
<Grid Height="80" MaxHeight="200">
<ItemsControl
ItemsSource="{Binding CurrentDataTable}"
ItemTemplate="{StaticResource TableDataTemplate}">
</ItemsControl>
</Grid>
用户控件绑定到特定的类“Class'TableViewModel,对所有数据库表来实现。一个例子:
class ClientsAdminTableViewModel : TableViewModel
{
// the Property the view binds to
private IList<Client> currentDataTable;
public ObservableCollection<Client> CurrentDataTable
{
get { return CollectionExtensions.ToObservableCollection<Client>(currentDataTable); }
set { currentDataTable = value; OnPropertyChanged("CurrentDataTable")}
}
public ClientsAdminTableViewModel()
{
DisplayName = Strings.ClientAdminDisplayName;
currentDataTable = context.Clients.ToList<Client>();
}
当绑定到{结合CurrentDataTable}这个代码产生的UI,其中,I可以看到水平和垂直滚动包围的灰体(可能是行),在其上一个长行的顶部(其中必须是标题行),但没有列。
任何帮助表示赞赏。
不,我在输出窗口中没有出现绑定错误。 – MartinKleiner
你尝试过包括itemsource绑定吗? –
ItemsControl包含您建议的ItemsSource行,并且ItemsTemplate语句应该允许我不在模板中包含绑定语句。从ItemsControl中删除它并将模板中的Binding语句从UI中删除数据网格。 – MartinKleiner