C# – Get a Bound Object from a control

bindingcdata-bindingwpf

I have the following xaml:

<ItemsControl>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Button Content="{Binding Name}"></Button>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

In my code I have an event that gives me access to the button. How can I take the button object and get the object that it's Name is bound to?

Here is psudo code that I would like to work:

public void MyEvent(Object obj)
{
   Button myButton = (Button) obj;
   MyBoundClass myObject = GetBoundClassFromProperty(myButton.Name);

   // Do something with myObject.
}

Best Answer

Try accessing the DataContext property. This will contain a reference to the current item the button is bound to.

public void MyEvent(Object obj) 
{ 
   Button myButton = (Button) obj; 
   MyBoundClass myObject = myButton.DataContext as MyBoundClass;

   // Do something with myObject. 
}