为什么数据绑定到DynamicResource不起作用?

Roh*_*hit 5 wpf

以下代码不起作用.我如何使其工作?

<Image Source="{DynamicResource {Binding VM.ImageKey}}" />
Run Code Online (Sandbox Code Playgroud)

bit*_*onk 5

这是DynamicResource MarkupExtension的错误用法.纠正它将是:

<Image Source="{DynamicResource VM.ImageKey}" />
Run Code Online (Sandbox Code Playgroud)

假设您有一个具有键"VM.ImageKey"的资源,其定义如下:

<Bla.Resources>
    <BitmapImage x:Key="VM.ImageKey" UriSource="C:\Uri\To\Image.jpg" />
</Bla.Resources>
Run Code Online (Sandbox Code Playgroud)

但是,如果你想绑定某些属性,DataContext那么你不能使用当前属性,DynamicResource但是Binding:

<Image Source="{Binding VM.ImageKey}" />
Run Code Online (Sandbox Code Playgroud)

假设您的当前DataContext是一个具有名为VM的属性的实例,它再次具有一个名为ImageKey的属性,是一个派生类型的ImageSource.


Roh*_*hit 3

此行为是设计使然。绑定仅适用于依赖对象的依赖属性,而 MarkupExtension 不是依赖对象。