Wpf 如何使用ItemsControl分配<;DataGrid.Columns>;?
我在一个控件中有一个datagrid(这里是:DataGridSelectorControl),我想使用ItemTemplate创建它的coulmns。实际上,我想这样做:Wpf 如何使用ItemsControl分配<;DataGrid.Columns>;?,wpf,mvvm,mvvm-light,wpfdatagrid,Wpf,Mvvm,Mvvm Light,Wpfdatagrid,我在一个控件中有一个datagrid(这里是:DataGridSelectorControl),我想使用ItemTemplate创建它的coulmns。实际上,我想这样做: <DataGrid x:Name="grd" ItemsSource="{Binding Source={StaticResource theSource}}" AutoGenerateColumns="False" > <DataGrid.Columns>
<DataGrid x:Name="grd" ItemsSource="{Binding Source={StaticResource theSource}}" AutoGenerateColumns="False" >
<DataGrid.Columns>
<ItemsControl ItemsSource="{Binding DataGridColumnItems}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</DataGrid.Columns>
</DataGrid>
public static readonly DependencyProperty DataGridTextColumnItemsProperty=DependencyProperty.Register("DataTextColumnItems", typeof(ObservableCollection<DataGridColumn>), typeof(DataGridSelectorControl))));
public ObservableCollection<DataGridColumn> DataGridColumnItems
{
get
{
return (ObservableCollection<DataGridColumn>)GetValue(DataGridTextColumnItemsProperty);
}
set
{
SetValue(DataGridTextColumnItemsProperty, value);
}
}
<DataGrid x:Name="grd" ItemsSource="{Binding Source={StaticResource theSource}}" AutoGenerateColumns="False" Columns={Binding DataGridTextColumnItems, RelativeSource={RelativeSource AncestorType=DataGridSelectorControl}}>
</DataGrid>
DataGrid.Columns属于ObservableCollection类型,请尝试以下操作:
<DataGrid x:Name="grd" ItemsSource="{Binding Source={StaticResource theSource}}" AutoGenerateColumns="False" >
<DataGrid.Columns>
<ItemsControl ItemsSource="{Binding DataGridColumnItems}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</DataGrid.Columns>
</DataGrid>
public static readonly DependencyProperty DataGridTextColumnItemsProperty=DependencyProperty.Register("DataTextColumnItems", typeof(ObservableCollection<DataGridColumn>), typeof(DataGridSelectorControl))));
public ObservableCollection<DataGridColumn> DataGridColumnItems
{
get
{
return (ObservableCollection<DataGridColumn>)GetValue(DataGridTextColumnItemsProperty);
}
set
{
SetValue(DataGridTextColumnItemsProperty, value);
}
}
<DataGrid x:Name="grd" ItemsSource="{Binding Source={StaticResource theSource}}" AutoGenerateColumns="False" Columns={Binding DataGridTextColumnItems, RelativeSource={RelativeSource AncestorType=DataGridSelectorControl}}>
</DataGrid>
public static readonly dependencProperty DataGridTextColumnItemsProperty=dependencProperty.Register(“DataTextColumnItems”、typeof(ObservableCollection)、typeof(DataGridSelectorControl));
公共ObservableCollection DataGridColumnItems
{
得到
{
返回(ObservableCollection)GetValue(DataGridTextColumnItemsProperty);
}
设置
{
SetValue(DataGridTextColumnItemsProperty,value);
}
}