2012-12-16 6 views
6

Qual è l'equivalente di questo nel codice C#?Elementi di rilegatura Origine a livello di codice

<ListView 
    x:Name="taskItemListView" 
    DataContext="{Binding SelectedItem, ElementName=itemListView}" 
    ItemsSource="{Binding taskItems}"> 
... 
</ListView> 

Ho provato il seguente codice, ma non sembra funzionare ...

Binding b = new Binding(); 
b.Path = new PropertyPath("taskItems"); 

DependencyProperty dp = DependencyProperty.Register("itemsSource", typeof(object), typeof(object), null); 
BindingOperations.SetBinding(taskItemListView, dp, b); 

Edit:

Sulla base di @ sa_ddam213 risposta, questo ha funzionato:

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); 

risposta

4

Tutto questo dovrebbe funzionare:

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

Nota: "Source = questo" this uguale alla classe che sta tenendo il taskItems, SelectedItem

+0

Grazie, fa miracoli! Solo 2 correzioni minori: la classe Binding ha un solo costruttore che non accetta argomenti e scopre che non era necessario impostare la seconda fonte di Binding. Ho modificato la mia domanda. – dcastro

+0

Binding funziona con un argomento di stringa, utilizzandolo ora in un progetto .NET4.0, collegamento: http://msdn.microsoft.com/en-us/library/system.windows.data.binding.aspx –

+0

Non attivo un'app WinRT: http://msdn.microsoft.com/en-us/library/windows/apps/br209820.aspx#constructors. – dcastro

0

Un modo semplice per farlo è ImpostaValore:

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

Maggiori informazioni su qui : DependencyObject.SetValue method

Problemi correlati