たとえば、いくつかの基本的なプロパティを実装する特定のコントロールの基本ビューモデルがあるとします。
public abstract class ControlVmBase{
public abstract int IconSize {get;set;}
}
また、そのコントロールで使用したい ResourceDictionary もあり、理想的には、含まれているスタイルの値を の実装にバインドしますControlVmBase
。ObjectDataProvider を介してこれを行うのは良い考えだと思いました。これはクリーンなソリューションのように見え、XAML で Intellisense をサポートしてくれるからです。
<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 を使用することは可能ですか、または派生クラスにバインドする別の可能性はありますか?