Visual Studio 2010 | .NET/WPF 4.0Il colore DynamicResource non funziona con BorderBrush su un bordo - Bug?
Penso che questo potrebbe essere un bug WPF, ma non riesco a trovare un bug report su di esso. Per coprire la possibilità che mi manca qualcosa di ovvio, mi rivolgo a StackOverflow per le risposte!
considerare questo XAML (nulla nel codebehind):
<Window x:Class="DownExpanders.BorderTest"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="BorderTest" Height="300" Width="300">
<Window.Resources>
<Color x:Key="BackgroundColor" R="255" G="0" B="0" A="255"/>
<Color x:Key="BorderColor" R="0" G="0" B="255" A="255"/>
<SolidColorBrush x:Key="BorderColorBrush" Color="{DynamicResource BorderColor}"/>
</Window.Resources>
<Grid>
<Border BorderThickness="20">
<Border.Background>
<SolidColorBrush Color="{DynamicResource BackgroundColor}"/>
</Border.Background>
<Border.BorderBrush>
<SolidColorBrush Color="{DynamicResource BorderColor}"/>
</Border.BorderBrush>
</Border>
<Border Margin="40" BorderBrush="{DynamicResource BorderColorBrush}" BorderThickness="20"/>
</Grid>
</Window>
Nella finestra di progettazione, rende come previsto. Il bordo esterno ha un grande bordo blu e uno sfondo rosso, il bordo interno ha un grande bordo blu. Grande.
Quando eseguo il codice, il bordo esterno non ha il bordo: sembra che non venga caricato. Lo sfondo è impostato su rosso correttamente. Nel frattempo, il bordo interno carica correttamente il suo bordo blu.
Se cambio "DynamicResource" su "StaticResource", viene eseguito correttamente il rendering durante l'esecuzione. L'incoerenza è davvero bugging me, e io non riesco a capire \
Quindi:.
- Perché il lavoro non DynamicResource per BorderBrush?
- Dato # 1, perché fa funziona per Sfondo?
- Perché la definizione esplicita del pennello a tinta unita nelle risorse sembra risolvere i problemi?
EDIT:
sembra che sia un bug che MS ha deciso di non fissare (grazie a Sheridan per il link): http://connect.microsoft.com/VisualStudio/feedback/details/589898/wpf-border-borderbrush-does-not-see-changes-in-dynamic-resource
Interessante, accade ancora in .net 4.5.50760 quindi se si tratta di un bug non lo hanno ancora risolto. – Andy
Sicuramente penseresti che sia un bug. Puoi anche aggiungere al tuo rapporto bug, Snoop riporta il pennello del bordo esterno come 'Trasparente' (Nessun errore) e questo problema non si verifica se hai impostato il pennello direttamente anche per il bordo esterno come in' BorderBrush = "{DynamicResource BorderColorBrush } "'. Quindi sembra più un problema di quando SolidColorbrush per BorderBrush è stato creato da un DynamicResource ** Color **, tutto diventa rovinato. Forse non è strano il caso di cercare di bloccare le risorse/accedervi – Viv
oh qualcos'altro che ho visto anche io, se sposti le risorse ad un livello più alto, ad esempio "App.xaml", funziona bene per il tuo codice esatto – Viv