Связывание WPF DataGrid внутри UserControl - PullRequest
2 голосов
/ 07 января 2011

Я хотел бы создать UserControl, содержащий DataGrid, а затем определить столбцы непосредственно внутри моего 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;

=> это не работает: столбец, связанный с Property1, не создается.

Я пытаюсь создать столбец программно:

    _datagGrid.Columns.Add(new DataGridTextColumn {
      Header = "Property 1",
      Binding = new Binding {
        Path = new PropertyPath("Property1"),
        Mode = BindingMode.TwoWay,
      },
    });

_datagGrid.ItemsSource = testList;

=> это не работает:заголовок отображается, но каждая строка моей DataGrid пуста (плохая привязка?).


1 - Какой самый простой способ связать столбцы DataGrid через UserControl в части XAML?

2 - Какой самый простой способ привязать столбцы DataGrid через UserControl программно?

1 Ответ

0 голосов
/ 07 января 2011

Я делаю это программно. Почти такой же код, как у вас. Работает отлично. Я никогда не пытался связать коллекцию Columns непосредственно, хотя я не понимаю, почему это не должно работать.

Ваше сообщение немного двусмысленно. Если вы хотите сказать, что ваш столбец не отображается, возможно, вам нужно добавить столбцы до создания таблицы. Если строки отображаются с пустым значением в столбце, то ваша привязка 'Property1' неверна.

Я не работаю в XAML, поэтому ничего не знаю об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...