Привязка, что ItemsSource программно
что эквивалентно этому в коде C#?
<ListView
x:Name="taskItemListView"
DataContext="{Binding SelectedItem, ElementName=itemListView}"
ItemsSource="{Binding taskItems}">
...
</ListView>
Я пробовал следующий код, но он, похоже, не работает...
Binding b = new Binding();
b.Path = new PropertyPath("taskItems");
DependencyProperty dp = DependencyProperty.Register("itemsSource", typeof(object), typeof(object), null);
BindingOperations.SetBinding(taskItemListView, dp, b);
редактировать:
основываясь на ответе @sa_ddam213, это сработало:
Binding dataContextBinding = new Binding();
dataContextBinding.Path = new PropertyPath("SelectedItem");
dataContextBinding.Source = itemListView;
BindingOperations.SetBinding(taskItemListView, ListView.DataContextProperty, dataContextBinding );
Binding sourceBinding = new Binding();
sourceBinding.Path = new PropertyPath("taskItems");
BindingOperations.SetBinding(taskItemListView, ListView.ItemsSourceProperty, sourceBinding );
2 ответов
что-то вроде этого должно работать:
BindingOperations.SetBinding(taskItemListView, ListView.DataContextProperty, new Binding("SelectedItem") { Source = itemListView});
BindingOperations.SetBinding(taskItemListView, ListView.ItemsSourceProperty, new Binding("taskItems") { Source = this });
Примечание: "Source = this"this
равно классу, который содержит taskItems
, SelectedItem
простой способ сделать это-SetValue:
taskItemListView.SetValue(ListView.ItemsSourceProperty, this.Source);
подробнее здесь: DependencyObject.Метод SetValue