C# 动态绑定到a";路径“;资源的分配

C# 动态绑定到a";路径“;资源的分配,c#,wpf,data-binding,dynamicresource,C#,Wpf,Data Binding,Dynamicresource,首先,我从以下代码开始: <ribbon:RibbonMenuButton IsEnabled="{Binding ForegroundIsConfigurable}" SmallImageSource="{Binding Source={StaticResource imageSource}, Path=Source, UpdateSourceTrigg

首先,我从以下代码开始:

<ribbon:RibbonMenuButton IsEnabled="{Binding ForegroundIsConfigurable}"
          SmallImageSource="{Binding Source={StaticResource imageSource},
                             Path=Source,
                             UpdateSourceTrigger=OnPropertyChanged}">
因此,我需要将动态资源直接绑定到
SmallImageSource
,这是一个依赖属性:

SmallImageSource="{DynamicResource imageSource}"
这将再次引发运行时错误,因为
imageSource
Image
的类型
SmallImageSource
要求值的类型为
ImageSource

现在可以建议将数据上下文设置为我的动态资源,并适当地绑定属性。如果我这样做,我会杀死属性
IsEnabled
的绑定,它有另一个
DataContext

据我所知,
多重绑定
也不是一个解决方案,因为它提供了一种机制,可以将一个属性绑定到多个源,但不能将不同的属性绑定到不同的上下文和源

在考虑如何继续时,我想到幸运的是,我可以将
ImageSource
的繁文缛节移动到
IValueConverter
中。在my
RibbonMenuButton
的给定数据上下文中,我有一个具有适当值的字符串值,该值实际上也是my
ImageSource
的源

无论如何,我仍然想知道,如果没有其他方法,即如果两个数据源处于不同的数据上下文中,我将如何解决这个问题。有什么我没看到的吗?如何确保不通过覆盖
DataContext
并针对动态资源的属性进行绑定来终止另一个绑定


imageSource
与上的XAML示例非常相似


...
您可以尝试将“imageResource”定义为
ImageSource
而不是
图像
。这对我有用


your_image.png
此外,您还可以使用ElementName绑定设置RibbonMenuButton的DataContext,而无需覆盖IsEnabled,如下所示



你能把代码贴在定义“imageSource”资源的地方吗?我想第二个想法行得通。我明天会试试的。然而,第一个想法行不通。我忘了提到我自己绘制图像,没有图像链接。@Em1关于第一个想法,如果您可以从绘制图像的代码访问资源字典的imageSource键,您可以动态更新它。我刚刚测试了第二种方法。出于某种原因,我对ElementName不起作用,但对RelativeSource起作用。-我用XAML绘制图像,我更新了与此相关的问题。我没有调试到当直接使用ImageSource(而不是Image.Source)时无法添加内容的问题。
SmallImageSource="{DynamicResource imageSource}"
<Image x:Key="imageSource">
  <Image.Source>
    <DrawingImage>
...