El recurso WPF se fusionó con Application.Resources pero no se resuelve en tiempo de ejecución

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

Pregunta

Tengo un pincel que es parte de un ResourceDictionary que se fusiona con Application.Resources.

Pero por alguna razón no se resuelve en tiempo de ejecución cuando se aplica un estilo a uno de los controles. Sin embargo, si llamo a Application.Current.FindResource ("BrushName") desde la ventana inmediata en el momento en que se lanza la excepción, se encuentra el recurso.

¿Me estoy perdiendo de algo? ¿No se supone que WPF intente buscar el recurso en los recursos de la aplicación?

ACTUALIZARLa aplicación es bastante grande, por lo que no puedo publicar todo el código real, pero esta es la forma en que se fusionan y usan los recursos:

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 ...>

Y luego algún control podría usar el estilo usando el recurso como este:

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

ACTUALIZAR

Parece suceder a los menús y los controles que se crean en el código. ¿Puede estar relacionado con esos controles y los menús que no son partes del árbol visual de ninguna ventana?

¿Fue útil?

Solución

Su diccionario somestyle.xaml necesita hacer referencia a pincel.xaml diccionario directamente, como así:

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

StaticResources solo busca el árbol del diccionario actual, por lo que debe transmitir cualquier recurso que deba hacer referencia.

Otros consejos

Entra en la administración central -> Administrar la aplicación de servicio -> Solicitud de servicio de perfil de usuario.

En "My Sitio Configuración", tiene "Configuración de mi sitio", aquí puede actualizar el valor para "My Site Host Ubicación" para que coincida con su nueva configuración.Asegúrese de hacer clic en "OK" en la parte inferior.

No estoy seguro de si esto pasa inmediatamente o si hay algunos trabajos de temporizador que deben ejecutarse antes de que los cambios sean visibles en la GUI para sus usuarios.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top