Как связать свойство виртуальной машины с ключом ресурса, используя DynamicResourceExtension? - PullRequest
0 голосов
/ 02 июня 2019

У меня есть ресурсы значков для кнопок, значки преобразуются в формат ресурсов 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;
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...