none
Utilisation de Custom DependencyProperty pour sélectionner le style appliqué à un control RRS feed

  • Question

  • Bonjour,

    La question est dans le titre, est'il possible d'appliquer dynamiquement (de manière à ce que le designer de VS le prenne en compte) un style à un Control en fonction d'une DependencyProperty créée pour l'occasion.

     

    Le but est de switcher parmi les styles pré-déclarer grâce à une propriété, afin que la personne qui utilise le Control ait juste à sélectionner son apparence.

     

    Voici le code de déclaration des deux styles

        <UserControl.Resources>       

            <Style x:Key="DarkBackground" TargetType="{x:Type Rectangle}">

                <Setter Property="Fill">

                    <Setter.Value>

                        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">

                            <GradientStop Color="#FF575757" Offset="0" />

                            <GradientStop Color="#FF3D3D3D" Offset="0.442" />

                            <GradientStop Color="#FF575757" Offset="1" />

                            <GradientStop Color="#FF3D3D3D" Offset="0.546" />

                        </LinearGradientBrush>

                    </Setter.Value>

                </Setter>

            </Style>

            <Style x:Key="WhiteBackground" TargetType="{x:Type Rectangle}">

                <Setter Property="Fill">

                    <Setter.Value>

                        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">

                            <GradientStop Color="#FF272727" Offset="0" />

                            <GradientStop Color="#FF4D4D4D" Offset="0.442" />

                            <GradientStop Color="#FF373737" Offset="1" />

                            <GradientStop Color="#FF4D4D4D" Offset="0.546" />

                        </LinearGradientBrush>

                    </Setter.Value>

                </Setter>

            </Style>

        </UserControl.Resources>

     

    Déclaration du control

            <Rectangle Grid.ColumnSpan="2" 

                       Height="{Binding Path=Height, ElementName=myMenuItem}" 

                       HorizontalAlignment="Left" 

                       Margin="0,0,0,0" 

                       Name="rectangle1" 

                       Stroke="{x:Null}" 

                       VerticalAlignment="Top" 

                       Width="{Binding Path=Width, ElementName=myMenuItem}" 

                       RadiusX="5" 

                       RadiusY="5" 

                       Style="?????????????????????">

            </Rectangle>

     

    Déclaration de la DependencyProperty

    public static DependencyProperty ItemStyleProperty = DependencyProperty.Register("ItemStyle", typeof(????????), typeof(MenuItem), new PropertyMetadata("??????????"));

     

            public Style ItemStyle

            {

                get { return (Style)this.GetValue(ItemStyleProperty); }

                set { this.SetValue(ItemStyleProperty, value); }

            }

     

    Je ne sais pas si cela est possible, si ce n'est pas le cas, y a t'il un moyen d'obtenir cette fonctionnalité ?

     

    Merci d'avance,

     

    Jérémy

    mardi 15 février 2011 15:05

Toutes les réponses