Прежде всего, я бы посоветовал получить приличную ручку для WPF и узнать, как она подходит к решению проблемы. Он сильно отличается от предыдущих технологий .NET Desktop, таких как WinForms. Как только у вас появится хорошее представление об отделении логики от пользовательского интерфейса и о том, как WPF подходит к проблеме, вы можете погрузиться и начать принимать правильные решения в зависимости от того, с чем сталкиваетесь.
Упомянутая вами проблема может быть решена несколькими способами. Что касается вашего вопроса об использовании Grid
, это может быть сделано, так как это тип макета. Это значительно превосходит Canvas
с точки зрения организации вашей визуальной структуры. Определенные строки / столбцы представляют собой не более чем контейнеры, которые могут содержать различные объекты пользовательского интерфейса. Поэтому нажатие Rectangle
на Grid
и раскраска по желанию даст вам эффект, который вы ищете. Этот Rectangle
может затем стать пользовательским элементом управления, который позволит вам определять различные свойства, а также специальные триггеры для наведения мыши и т. Д. ...
На более высоком уровне вы захотите инкапсулировать эту логику как UserControl
, которая также будет содержать ваш пользовательский элемент управления. Возможно, UserControl
содержит Grid
, который будет использовать ваш пользовательский элемент управления.
Надеюсь, это даст вам некоторые идеи о том, как начать работу, однако более глубокое понимание WPF поможет вам в достижении вашей цели.