Заморочка интересная с WPF binding
посмотрел. не заработало, пока не добавил в хамле основного окна DataContext ("нормальный", не DesignInstance).
после этого заработало. клацаешь на чекбоксы, клавиши появляются/исчезают.
но мне кажется, было бы проще и понятней вместо создания DependencyProperty в SampleUserControl.cs (лишнего, мне кажется), просто описать в MainWindow.xaml этот контрол вот так
<Views:SampleUserControl DataContext="{Binding StateContainerMain}" />
и будет достигнута та же цель: присвоение контролу DataContext.
кроме того, я начинал всю эту ветку о том, как срабатывает изменение OnPropertyChanged, где property - DependencyProperty типа object. мне кажется, Visibility - это enum, и срабатывает все как и в случае примитива.
т.е. я не понял, что этот пример мне хотел продемонстрировать/предложить.
но посмотреть было интересно. еще раз спасибо : )