2010-05-04 16 views
12

Sto cercando un modo per ottenere la proprietà a cui è associato un controllo (in C#).WPF: Ottieni proprietà per il controllo di un controllo nel codice dietro

Se ho il seguente:

<dxe:ComboBoxEdit DisplayMember="Name" ItemsSource="{Binding Path=NameOptions, Mode=OneTime}" SelectedItem="{Binding Path=Name, UpdateSourceTrigger=PropertyChanged}" /> 

Ora sto cercando di ottenere la posizione in cui il SelectedItem è destinato a, vale a dire il risultato dovrebbe essere "Nome". Quindi nel codice ho bisogno di fare qualcosa con quella proprietà ViewModel. Il problema è che non posso limitarmi a codificare il codice poiché è un metodo generico che deve funzionare con ogni controllo del modulo.

Grazie, Richard

risposta

16

credo che questo dovrebbe farlo:

BindingExpression be = BindingOperations.GetBindingExpression((FrameworkElement)yourComboBox, ((DependencyProperty)Button.SelectedItemProperty)); 
string Name = be.ParentBinding.Path.Path; 

To give credit where it's due.

+0

Grazie per l'aiuto! Ha funzionato perfettamente – Richard

+0

Il link in questa domanda non funziona più, solo un avviso. –

2

Date un'occhiata ad utilizzare BindingExpression

IE:

var bindingExpression = this.myComboBox.GetBindingExpression(ComboBox.SelectedItem); 
string bindingPath = bindingExpression.ParentBinding.Path.Path 

Vedo che si sta utilizzando un ComboBox DXE invece di uno standard - in attesa che derivi da un normale oggetto di controllo .NET, si dovrebbe comunque avere questa funzionalità.

+0

Grazie per la risposta, ho provato entrambi gli approcci ed entrambi hanno funzionato. E funziona bene sul ComboBox dxe. Grazie. – Richard

Problemi correlati