2010-05-04 20 views
12

Estoy intentando encontrar una forma de obtener la propiedad a la que está vinculado un control (en C#).WPF: Obtiene la propiedad a la que se vincula un control en el código detrás de

Si tengo el siguiente:

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

ahora estoy tratando de conseguir la ubicación en la que el SelectedItem está obligado a, es decir, el resultado debe ser "Nombre". Luego, en el código, necesito hacer algunas cosas con esa Propiedad de ViewModel. El problema es que no puedo simplemente codificar esto porque es un método genérico que necesita funcionar con cada control en el formulario.

Gracias, Richard

Respuesta

16

creo que esto debería hacerlo:

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

To give credit where it's due.

+0

¡Gracias por la ayuda! Funcionó perfectamente – Richard

+0

El enlace en esta pregunta ya no funciona, solo un aviso. –

2

Tener una mirada en el uso de BindingExpression

IE:

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

Veo que está usando un ComboBox DXE en lugar de un estándar, esperando que se derive de un objeto de control .NET normal, aún debería tener esta funcionalidad.

+0

Gracias por la respuesta, probé ambos enfoques y ambos funcionaron. Y funciona bien en dxe ComboBox. Gracias. – Richard

Cuestiones relacionadas