在UserControl中绑定WPF DataGrid

时间:2011-01-07 17:47:48

标签: c# wpf user-controls datagrid

我想创建一个包含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列的最简单方法是什么?

1 个答案:

答案 0 :(得分:0)

我以编程方式执行此操作。几乎和你一样的代码。工作良好。我从来没有试过绑定Columns集合本身,虽然我不明白为什么这不应该工作。

你的信息有点含糊不清。如果您的意思是说您的列没有显示,可能需要在创建表之前添加列。如果行在列中显示空值,则绑定“Property1”错误。

我不在XAML工作,所以对此一无所知。