绑定的ItemsSource编程(Binding ItemsSource programmatica

2019-08-04 03:42发布

什么是在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 );

Answer 1:

像这样的财产以后应该工作:

BindingOperations.SetBinding(taskItemListView, ListView.DataContextProperty, new Binding("SelectedItem") { Source = itemListView});
BindingOperations.SetBinding(taskItemListView, ListView.ItemsSourceProperty, new Binding("taskItems") { Source = this });

注:“源=该” this等于持有该类别taskItemsSelectedItem



Answer 2:

一个简单的方法来做到这一点是的SetValue:

taskItemListView.SetValue(ListView.ItemsSourceProperty, this.Source);

在这里更多的信息: DependencyObject.SetValue方法



文章来源: Binding ItemsSource programmatically