Changement de XAML style dynamiquement dans le Code Derrière, de sorte que les contrôles de l'application de ce style aussi tenir compte de la modification
Je veux être en mesure de définir des propriétés de style (et les valeurs) de l' .cs fichier dans ma fenêtre WPF.
Mon problème est que si j'ai 30 rectangles, tous de qui je veux avoir le même style (et je ne veux pas de mise à jour de chacun d'entre eux individuellement). J'aimerais les avoir tous ensemble (dans le fichier xaml) dans le même style, et ensuite mettre à jour le style de regarder la façon dont je le voudrais.
Dire que j'ai mis le Style = "key1"
dans le code Xaml pour chaque rectangle. Alors je veux être en mesure de modifier "key1" plus tard, de sorte que tous les rectangles va refléter ce changement.
J'ai essayé en App.xaml
<Application.Resources>
<Style x:Key="key1" TargetType="Rectangle">
<Setter Property="Fill" Value="Red"/>
</Style>
</Application.Resources>
Dans MainwWindows.xaml
<StackPanel>
<Rectangle Style="{StaticResource key1}" Height="200" Width="200" x:Name="rect1"/>
<Button Click="Button_Click" Content="Click"/>
</StackPanel>
Dans le code derrière
private void Button_Click(object sender, RoutedEventArgs e)
{
Style style = Application.Current.Resources["key1"] as Style;
style.Setters.Add(new Setter(Rectangle.VisibilityProperty, Visibility.Collapsed));
}
Cette mise à jour du style, mais ne mettez pas à jour les rectangles.
Est-ce possible? Personne ne sait comment faire cela? (Un exemple serait grandement apprécié).
Update()
ou Refresh()
méthodes sur des éléments de l'INTERFACE utilisateur (Fenêtre ou un Rectangle). l'essayer, peut-être cela peut vous aider.
OriginalL'auteur Nikhil Agrawal | 2012-04-27
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser
DynamicResource
de sorte qu'il peut être modifié au moment de l'exécution. Vous devez également remplacer le style avec un nouveau, ne pas essayer de modifier l'existant. Cela fonctionne:OriginalL'auteur Phil
Il est également intéressant de mentionner que les styles sont scellés utilisé une fois et ne peuvent donc pas être modifiés. C'est la raison pour laquelle les styles doit être remplacé par un autre exemple, plutôt que mise à jour.
OriginalL'auteur Ahmad