В моем проекте Windows 8 Metro я использую класс, производный от ContentControl (назовем его MyControl), для представления своего контента. Внутри MyControl у меня есть ScrollViewer. Поскольку я хочу, чтобы мой элемент управления обрабатывал события клавиатуры, мне нужно иметь возможность установить фокус на свой элемент управления. Однако я также хочу, чтобы средство просмотра прокрутки обрабатывало ключевые события, такие как клавиши со стрелками и PageUp/Down. Точнее, я хочу, чтобы это была опция, которую может включать или выключать другой программист. Это означает, что иногда я хочу, чтобы MyControl был табулятором, а иногда я хочу, чтобы ScrollViewer был табулятором, но никогда и то, и другое.
Проблема в том, что я не хочу раскрывать внутреннюю работу MyControl другим программистам. То есть в идеале они должны иметь возможность использовать MyControl.IsTabStop и оставить логику размещения фактической позиции табуляции с моим элементом управления (чтобы поместить его в MyControl или ScrollViewer).
Есть ли хороший способ добиться этого, или мне как-то нужно обойти это, предоставив отдельную функцию, чтобы сделать мой элемент управления остановкой табуляции?