提问人:andboz 提问时间:11/16/2023 更新时间:11/16/2023 访问量:31
WPF UserControl DataGrid 列绑定 C#
WPF UserControl DataGrid Columns Binding C#
问:
我想在 WPF 中创建一个内部有一个 DataGrid 的 UserControl,我想像使用标准 DataGrid 一样使用它。 例如,我的 UserControl 如下所示:
<UserControl x:Class="SupervisoreIB.UI.CustomControls.DataGridWithHeader"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
...
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="40"></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Border Grid.Row="0">
<Label Content="test" />
</Border>
<Border Grid.Row="1">
<DataGrid />
</Border>
</Grid>
</UserControl>
我想使用它的方式是这样的:
<uc:DataGridWithHeader Grid.Row="1" Grid.Column="0" Margin="10">
<uc:DataGridWithHeader.Columns>
<DataGridTextColumn Header="COL1" />
<DataGridTextColumn Header="COL2" />
<DataGridTextColumn Header="COL3" />
</uc:DataGridWithHeader.Columns>
</uc:DataGridWithHeader>
我尝试像这样使用Column DependencyProperty:
public ObservableCollection<DataGridColumn> Columns
{
get { return (ObservableCollection<DataGridColumn>)GetValue(ColumnsProperty); }
set { SetValue(ColumnsProperty, value); }
}
public static readonly DependencyProperty ColumnsProperty =
DependencyProperty.Register("Columns", typeof(ObservableCollection<DataGridColumn>), typeof(DataGridWithHeader), new PropertyMetadata(null, OnColumnsChanged));
但它似乎什么也没做。
答:
0赞
mm8
11/16/2023
#1
您应该在 的构造函数中初始化集合属性:UserControl
public partial class DataGridWithHeader : UserControl
{
public DataGridWithHeader()
{
InitializeComponent();
SetValue(ColumnsProperty, new ObservableCollection<DataGridColumn>());
}
...
}
然后,您还需要使用回调中的列填充实际值,例如:DataGrid
private static void OnColumnsChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
DataGridWithHeader dataGridWithHeader = (DataGridWithHeader)d;
dataGridWithHeader.dataGrid.Columns.Clear();
if (dataGridWithHeader.Columns != null)
foreach (DataGridColumn column in dataGridWithHeader.Columns)
dataGridWithHeader.dataGrid.Columns.Add(column);
}
评论
0赞
MIHOW
11/16/2023
或者可以在 Columns propdp 的 PropertyMetadata 中初始化集合
评论