WPF: Style in untergeordnete Controls weitergeben?
-
Habe Window:
<Window.Resources> <Style x:Key="RenaFontStyle"> <Setter Property="Control.FontSize" Value="12" /> <Setter Property="Control.FontFamily" Value="VAGRounded BT"/> <Setter Property="TextElement.Foreground" Value="Blue"/> </Style> <Style x:Key="RenaThemeSytle" BasedOn="{StaticResource RenaFontStyle}"> <Setter Property="Control.Background"> <Setter.Value> <LinearGradientBrush StartPoint="0,1" EndPoint="0,0"> <GradientStop Offset="1" Color="LightBlue" /> <GradientStop Offset="0" Color="White" /> </LinearGradientBrush> </Setter.Value> </Setter> </Style> </Window.Resources>
in dem window binde ich ein Usercontrol ein, und über geben den Style:
<mb:Mainbar Grid.Row="0" x:Name="MainBarz" Style="{StaticResource RenaThemeSytle}"></mb:Mainbar>
und soll in dem usercontrol der style angewandt werden, was aber nich geht:
<UserControl x:Class="WpfApplication1.Mainbar" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Height="Auto" Width="Auto"> <Grid ShowGridLines="True"> <Button>test</Button> </Grid> </UserControl>
hier sollte der Button test den style aus dem window annehmen, was mache ich falsch?
-
du weisst dem UserControl das style zu, nicht dem button {o;
ist das selbe als wenn du schreibst<UserControl x:Class="WpfApplication1.Mainbar" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Height="Auto" Width="Auto" Style="{StaticResource RenaThemeSytle}"> <Grid ShowGridLines="True"> <Button>test</Button> </Grid> </UserControl>
du musst des style dem button zuweisen
<Button Style="{StaticResource RenaThemeSytle}">test</Button>inwiefern das usercontrol auf die resourcen des parents zugreift weiss ich grad nicht - theoretisch wird nach einem style nach oben gesucht - obs aber ueber den UserControl hinaus geht bin ich grad ueberfragt
dh dann entweder per code mit FindResource und konsorten arbeiten, oder das style in einer ResourceDictionary einbetten - dann gehts auf jeden fall