我想创建一个包含DataGrid的UserControl,然后直接在UserControl中定义列:
<my:ControlContainingDataGrid ItemsSource="{Binding}">
<my:ControlContainingDataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Property1}" Header="Property 1"/>
在UserControl中,我公开了DataGrid的列:
static ControlContainingDataGrid()
{
ColumnsProperty = DependencyProperty.Register(
"Columns",
typeof(ObservableCollection<DataGridColumn>),
typeof(ControlContainingDataGrid),
new UIPropertyMetadata(new ObservableCollection<DataGridColumn>())
);
}
[Description("Columns"), Category("Columns")]
public ObservableCollection<DataGridColumn> Columns
{
get { return _datagGrid.Columns; }
}
public static readonly DependencyProperty ColumnsProperty;
=&GT;它不起作用:未绑定到Property1的列。
我尝试以编程方式创建列:
_datagGrid.Columns.Add(new DataGridTextColumn {
Header = "Property 1",
Binding = new Binding {
Path = new PropertyPath("Property1"),
Mode = BindingMode.TwoWay,
},
});
_datagGrid.ItemsSource = testList;
=&GT;它不起作用:显示标题,但我的DataGrid的每一行都是空的(绑定错误?)。
1-通过XAML部分中的UserControl绑定DataGrid列的最简单方法是什么?
2-以编程方式通过UserControl绑定DataGrid列的最简单方法是什么?
答案 0 :(得分:0)
我以编程方式执行此操作。几乎和你一样的代码。工作良好。我从来没有试过绑定Columns集合本身,虽然我不明白为什么这不应该工作。
你的信息有点含糊不清。如果您的意思是说您的列没有显示,可能需要在创建表之前添加列。如果行在列中显示空值,则绑定“Property1”错误。
我不在XAML工作,所以对此一无所知。