views:

198

answers:

2

Hi all,

I am trying to find a way to get the Property to which a control is bound (in c#).

If I have the following:

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

I am now trying to get the location to which the SelectedItem is bound to, i.e. the result should be "Name". Then in code I need to do some stuff with that ViewModel Property. Issue is that I can't just hard code this as it is a generic method that needs to work with each control on the form.

Thanks, Richard

+2  A: 

I think this should do it:

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

To give credit where it's due.

Mark Synowiec
Thanks for the help! Worked perfectly.
Richard
A: 

Have a look into using BindingExpression

IE:

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

I see you're using a DXE ComboBox instead of a standard - expecting it derives from a normal .NET control object, you should still have this functionality.

Daniel May
Thanks for the answer, tried both approaches and both worked. And works fine on the dxe ComboBox. Thanks.
Richard