【发布时间】:2022-01-17 06:33:02
【问题描述】:
创建对动态资源做出反应的按钮(深色和浅色主题的样式)是这样完成的:
<Button>
<Image Source="{DynamicResource IconId_12}" />
</Button>
当尝试对 ItemsControl 按钮的相同概念时遇到困难,每个按钮都有不同的图标,每个按钮都有一个键,指的是深色或浅色主题的图像源:
<ItemsControl ItemsSource="{Binding ButtonVMs}">
<ItemsControl.Resources>
<DataTemplate DataType="{x:Type ButtonVM}">
<Button Command="{Binding ClickCommand}">
<Image Source="{DynamicResource {Binding IconKey}}" />
</Button>
</DataTemplate>
</ItemsControl.Resources>
</ItemsControl>
ButtonVM 如下所示:
public class ButtonVM {
public Command ClickCommand { get; set; }
public string IconKey { get; set; }
}
如何将资源键名绑定到动态绑定中?
我注意到您可以在代码中使用<FrameworkElement>.SetResourceReference(SourceProperty, "IconKey")。 (如this stackoverflow answer 中建议的那样)。但是这里的问题是VM不是FrameworkElement。
【问题讨论】: