Предположим, у меня есть базовая модель просмотра для определенного элемента управления, который реализует некоторые базовые свойства, например.Может ли ObjectDataProvider работать с производными классами?
public abstract class ControlVmBase{
public abstract int IconSize {get;set;}
}
У меня также есть ResourceDictionary, которые я хочу использовать с этим элементом управления, и идеально связываемые значения в содержавшихся стилей к реализации ControlVmBase
. Я думал, что это будет хорошая идея, чтобы сделать это через ObjectDataProvider, так как она выглядит как чистое решение и дает мне Intellisense поддержку в XAML:
<ResourceDictionary>
<ObjectDataProvider x:Key="LinkedVm" ObjectType="{x:Type ControlVmBase}" />
<Style x:Key="MySpecialControlStyle" TargetType="MyCustomControl">
<Setter Property="ImageSize" Value="{Binding Source={StaticResource LinkedVm}, Path=IconSize}" />
</Style>
</ResourceDictionary>
Однако это не работает, так как ODP пытается экземпляр ObjectType, который бессмыслен, поскольку он является абстрактным классом и не влияет на реализованные классы. Можно ли использовать такой ODP, или есть ли другая возможность связываться с производными классами?
Идея фабрики очень хорошая, я собираюсь попробовать ее завтра! – Lennart
Прекрасно работает и отлично сочетается с механизмом плагина, который я использую, спасибо! – Lennart