Я пытаюсь создать настраиваемый элемент управления - кнопку - которая будет иметь несколько стилей, применяемых к нему, в зависимости от значения свойства в контексте данных.
То, что я думал, использует нечто похожее на:
<Button Style="{Binding Path=ButtonStyleProperty, Converter={StaticResource styleConverter}}" Text="{Binding Path=TextProp}" />
И в коде... Внедрите IValueConverter, который делает что-то похожее на код ниже в методе ConvertTo
:
switch(value as ValueEnums)
{
case ValueEnums.Enum1:
FindResource("Enum1ButtonStyle") as Style;
break;
... and so on.
}
Однако я не совсем уверен, как вытащить объект стиля, и даже если это возможно вообще...
То, что я делаю в среднем времени, обрабатывает событие DataContextChanged
, а затем прикрепляет обработчик к событию PropertyChanged
объекта, привязанного к кнопке, - затем запускает там оператор switch.
Это не совсем идеально, но пока я не смогу найти лучшее решение, похоже, это то, что мне нужно будет использовать.