Привязка элемента, если оба задействованных объекта созданы в коде позади
В моем проекте WPF я пытаюсь создать отображаемые объекты в коде позади. Для некоторых свойств я использую связывание элементов, например:
<GridViewColumn ... Width="{Binding ElementName=dummywidth1, Path=ActualWidth}" >
Чтобы сделать это в коде позади, я использую следующий код:
GridViewColumn column = new GridViewColumn();
Binding binding = new Binding("ActualWidth");
binding.ElementName = "dummywidth1";
BindingOperations.SetBinding(column, GridViewColumn.WidthProperty, binding);
где "dummywidth1" - это граница с шириной, которую нужно использовать.
Это хорошо работает, если Border "dummywidth1" уже является частью файла.xaml. Если я создаю Границу в коде позади, ширина НЕ применяется к столбцу.
Border border = new Border();
border.Name = "WidthHelper" + Grid_Sizer.ColumnDefinitions.Count;
Grid_Sizer.Children.Add(border);
и используйте новый border.Name для привязки.
binding.ElementName = border.Name;
Кажется, что привязка элемента не работает с только что созданным объектом Border. Когда отображается WPF, границы, созданные в коде позади, имеют желаемый размер, но этот размер не переносится в столбец. Есть ли способ добиться связывания элементов с обоими элементами, созданными в коде позади?
Заранее спасибо,
Фрэнк
1 ответ
Было бы намного проще установить привязку Source
собственность вместо ElementName
:
binding.Source = border;