Ресурс WPF объединился с Application.Resources, но не разрешен во время выполнения.

StackOverflow https://stackoverflow.com/questions/2543726

Вопрос

У меня есть кисть, которая является частью ResourceDictionary это объединено с Application.Resources.

Но по какой -то причине это не решается во время выполнения, когда к одному из элементов управления применяется стиль. Однако, если я называю Application.current.findresource («BrushName») из непосредственного окна в то время, когда исключение брошено, ресурс найден.

Я что-то упускаю? Разве WPF не должен пытаться искать ресурс в ресурсах приложения?

ОБНОВИТЬПриложение довольно большое, поэтому я не могу опубликовать весь фактический код, но вот как ресурсы объединены и используются:

Brushes.xaml

<ResourceDictionary ...>
  <SolidColorBrush x:Key="BrushName" Color="#12345678" />
</ResourceDictionary>

SomeStyles.xaml

<ResourceDictionary ...>
  <Style x:Key="SomeStyle">
    <Setter Property="SomeProperty" Value="{StaticResource BrushName}" />
  </Style>
</ResourceDictionary>

App.xaml

<Application ...>
  <Application.Resources>

    <ResourceDictionary>
      <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="Brushes.xaml" />
        <ResourceDictionary Source="SomeStyles.xaml" />
      </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>


  </Application.Resources>
</Application ...>

И тогда какой -то контроль может использовать стиль, используя ресурс, как это:

...
Style={StaticResource SomeStyle}
...

ОБНОВИТЬ

Кажется, это происходит с меню и элементами управления, которые создаются в коде. Может ли это быть связано с этими элементами управления, а меню не являются частями визуального дерева какого -либо окна?

Это было полезно?

Решение

Ваш словарь SOMESTYLE.XAML должен напрямую ссылаться на щетки.

<ResourceDictionary ...>
  <ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="Brushes.xaml" />
  </ResourceDictionary.MergedDictionaries>
  <Style x:Key="SomeStyle">
    <Setter Property="SomeProperty" Value="{StaticResource BrushName}" />
  </Style>
</ResourceDictionary>

StaticResources только ищут дерево текущего словаря, поэтому вам необходимо пройти в любые ресурсы, которые ему необходимо ссылаться.

Другие советы

Перейти к центральному администрированию -> Управление приложением службы -> Приложение сервиса профиля пользователя.

Под «Настройки моего сайта» у вас есть «Установка моего сайта», в котором здесь вы можете обновить значение для «Местоположение моего сайта», чтобы соответствовать новой установке.Обязательно нажмите «ОК» внизу.

Не уверены, что он проходит немедленно или, если есть некоторые задания таймера, которые необходимо запускать до того, как изменения будут видны в GUI для ваших пользователей.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top