У меня есть ресурсы значков для кнопок, значки преобразуются в формат ресурсов XAML.Мне нужно связать свойство «Значок кисти» из модели представления с ключом DynamicResourceExtension.
<Button
Grid.Row="2"
Grid.Column="1"
Width="48"
BorderBrush="{x:Null}"
Command="{Binding OpenDialogIcons}"
CommandParameter="{Binding RelativeSource={RelativeSource Mode=Self}}"
Style="{StaticResource BubleButton}">
<Button.Content>
<!-- This binding doesn't work, how can I solve the problem? -->
<DynamicResource ResourceKey="{Binding IconBrush.ResourceKey, Mode=TwoWay}"/>
</Button.Content>
</Button>
Свойство ViewModel:
public DynamicResourceExtension IconBrush
{
get { return _iconBrush; }
set
{
SetProperty(ref _iconBrush, value, () => IconBrush);
}
}
Инициализация свойства
IconResources resources = new IconResources();
IconBrush = resources.DrawIcon();
Метод, который я использую, чтобы получить контроль над ресурсами.Этот код также несовершенен. Я ищу лучшие решения, потому что мне нужно использовать итератор.
public DynamicResourceExtension DrawIcon()
{
ResourceDictionary resource = new ResourceDictionary();
resource.Source = new Uri("../../Resources/Icons.xaml",
UriKind.Relative);
DynamicResourceExtension dynamicResource =
new DynamicResourceExtension();
foreach (var key in resource.Keys)
{
if ((string) key == "SettingIcon")
dynamicResource.ResourceKey = key;
}
return dynamicResource;
}