When an option button is clicked, we can extrapolate back to find the actual option, its parent application and
therefore change the IsEnabled property of the other options, and of course act upon the application depending on the option.

privatevoid
OptionButton_Click(objectsender, RoutedEventArgs e)

{

var button = sender
as
Button;

var option = button.DataContext
as
Option;

var application = Applications[option.ParentIndex];

switch(option.Name)

{

case"Share":

foreach(var opt
in
application.Options)

opt.IsEnabled
= opt.Name ==
"Share"?false
:true;

break;

default:

foreach(var opt
in
application.Options)

opt.IsEnabled
= opt.Name ==
"Share"?true
:false;

break;

}

}

This is a silly function that simply changed the IsEnabled property, and hence updates the UI, but it shows how I can reference the option, and
it's parent class, which allows me to do whatever I need to do.