Как отображать на элементе разные шаблоны данных (DataTemplate), исходя из значения свойства на viewModel, а не типа данных этого свойства
Всех приветствую. Появилась необходимость отображать элементы на Window исходя из значения переменных на viewModel. Проблема только в том, что я не знаю, как это правильно делать. Я знаю, как делается навигация страниц (Page) в окне, и я мог бы решить свою задачу так же. Но я подумал, что не в полной мере оптимально создавать несколько новых типов только для того, чтобы на одном единственном окне в программе отрисовать один элемент (условный listView). Если наглядно, то вот код, где FunctionPage - это enum; PagePresenter - свойство на view model, хранящее значение перечисления. Данный код не работает
<Grid>
<Grid.Resources>
<DataTemplate DataType="FunctionPage.Red">
<Border
Background="Red"
/>
</DataTemplate>
<DataTemplate DataType="FunctionPage.Blue">
<Border
Background="Blue"
/>
</DataTemplate>
</Grid.Resources>
<ContentControl Content="{Binding PagePresenter}"/>
</Grid>
Суть в том, что я хочу отрисовать на гриде условно красный бордер, если значение заданного в ContentControl enum свойства будет одно, и синий, если будет другое, но я не знаю, как это сделать. Я мог бы это реализовать, если в свойстве DataType у каждого DataTemplate значение представляло собой полноценный тип данных, Н-р: DataType="{x:Type enums:FunktionPageEnum}", но я уже говорил, почему мне не хочется так делать, да и в любом случае, каждый DataTemplate этого грида в качестве контекста данных будет ссылаться на дата контекст родительской Window, так что даже с этой точки зрения использовать полноценные типы было бы избыточной мерой. Так как в итоге лучше сделать в этой ситуации ? если нельзя сделать так, как хочу я, то как правильно ?