@AlexSofar

Как cвязать свойство VM с ключом “ResourceKey” при помощи расширения DynamicResource?

У меня есть ресурсы иконок для кнопок, иконки представлены в виде XAML Resource. Мне необходимо связать свойство IconBrush из модели предствления с ключем расширения DynamicResource.
<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>
         <!-- Данная привязка не работает, как можно решить проблему? -->
         <DynamicResource ResourceKey="{Binding IconBrush.ResourceKey, Mode=TwoWay}"/>
     </Button.Content>
 </Button>

Свойство из модели представления:
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;
}
  • Вопрос задан
  • 108 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы