Советую посмотреть такой паттерн как MVVM, взять какой нибудь фреймворк MVVMLight, и потом просто привязываются свойства вьюмодели и готово, а так придется событие на изменение выделенного элемента делать на первый датагрид, в котором уже программно второму присваивать новый список.
Наследуйтесь от Canvas, переопределяйте OnRender, в него передается DrawingContext, с его помощью и рисуйте, что необходимо. Можно добавить свойства необходимые и к ним DependencyProperty, чтобы биндинги можно использовать.