ho definito uno stile in un ResourceDictionary
per un pulsante con un'immagine:UserControls WPF: immagine scompare anche con 'x: Shared = "false"'
<Style x:Key="BotonIrAInicioStyle" TargetType="Button">
<Setter Property="Margin" Value="0"/>
<Setter Property="Width" Value="{Binding RelativeSource={RelativeSource Self}, Path=ActualHeight}"/>
<Setter Property="Content">
<Setter.Value>
<Image Margin="2" Source="{StaticResource IconoDashboardBlanco}" MaxHeight="20" Stretch="Uniform"
RenderOptions.BitmapScalingMode="HighQuality"/>
</Setter.Value>
</Setter>
</Style>
La fonte immagine viene definita in un altro ResourceDictionary
nel stesso insieme, ed è indicata come x:Shared="False"
:
<BitmapImage x:Key="IconoDashboardBlanco" x:Shared="False"
UriSource="pack://application:,,,/QualityFramework;component/Images/dashboard64X64.png"/>
poiché lo stile sarà utilizzato in un gruppo diverso, ho usato la notazione "pack://application:,,,"
per indicare l'immagine. Lo Build Action
per l'immagine è impostato su Resource (Do not copy to output directory)
.
Nel complesso principale ho due UserControls
che mostrano un pulsante con identico stile:
<Button DockPanel.Dock="Left" Style="{StaticResource BotonIrAInicioStyle}" Click="BotonIrAInicio_Click"/> (Click event has nothing to do with the problem)
PROBLEMA:
apro UserControl A
contenente il pulsante con l'immagine e l'immagine viene visualizzata ok . Quindi apro UserControl B
contenente un pulsante identico, immagine ok. Apro di nuovo UserControl A
e l'immagine è sparita. Accade lo stesso se apro UserControl B
e poi UserControl A
, l'ultimo "possiede" l'immagine.
Sono andato dappertutto e tutte le soluzioni indicano il x:Shared="False"
, lo URI notation
e lo Build Action
... Ho applicato tutte e il problema si verifica ancora. Ho anche provato a pulire e ricostruire senza successo.
Cosa mi manca? Grazie!
PS: se imposto direttamente il contenuto di entrambi i pulsanti sull'immagine, tutto va bene, ma l'intero punto dello stile è quello di evitare esattamente quello!
Grazie per aver postato una soluzione, hai assolutamente ragione nei tuoi commenti. – Hannish