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


Anmelden zum Antworten