Quiero poder establecer propiedades de estilo (y valores) desde el archivo .cs en mi ventana WPF.Cambiando el estilo XAML dinámicamente en Code Behind para que los controles que apliquen ese estilo también reflejen el cambio
Mi problema es si tengo 30 rectángulos, todos los cuales quiero que tengan el mismo estilo (y no quiero actualizarlos todos individualmente). Me gustaría tenerlos a todos listos (en el archivo xaml) con el mismo estilo, y luego actualizar el estilo para que se vea de la manera que me gustaría.
Digamos que establecí el Style = "key1"
en el Xaml para cada rectángulo. Entonces quiero poder modificar "key1" más tarde para que todos los rectángulos reflejen ese cambio.
me trataron en App.xaml
<Application.Resources>
<Style x:Key="key1" TargetType="Rectangle">
<Setter Property="Fill" Value="Red"/>
</Style>
</Application.Resources>
En MainwWindows.xaml
<StackPanel>
<Rectangle Style="{StaticResource key1}" Height="200" Width="200" x:Name="rect1"/>
<Button Click="Button_Click" Content="Click"/>
</StackPanel>
En código detrás
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));
}
Esto actualiza el estilo pero no se actualizan los rectángulos.
¿Esto es posible? ¿Alguien sabe como hacer esto? (Un ejemplo sería muy apreciado).
Creo que tiene que llamar a los métodos 'Update()' o 'Refresh()' en los elementos de la IU (solo ventana completa o rectángulo). pruébalo, puede ser que esto pueda ayudar. – stukselbax