Bonjour,

je voudrais créer un UserControl avec un état : Normal ou Réduit que je représenterai par un boolean.
Quand le composant est "réduit", j'ai un certain nombre de TextBlock que je collapse.

Voilà le code de ma classe :

Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public partial class MyControl : UserControl
{
    public MyControl()
    {
        this.InitializeComponent();
    }
 
    public Boolean Mini
    {
        get { return (Boolean)this.GetValue(MiniProperty); }
        set { this.SetValue(MiniProperty, value); }
    }
    public static readonly DependencyProperty MiniProperty = 
        DependencyProperty.Register("Mini", typeof(Boolean), typeof(MyControl), new PropertyMetadata(false));
}

Et voilà l'XAML correspondant :

Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<UserControl
    ...
    x:Class="MyNameSpace.MyControl">
 
    <UserControl.Resources>
        <Style TargetType="TextBlock" x:Key="collapsedMini">
            <Style.Triggers>
                <Trigger Property="MyControl.Mini" Value="True">
                    <Setter Property="Visibility" Value="Collapsed"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </UserControl.Resources>
    ...
    <TextBlock Style="{StaticResource collapsedMini}">...</TextBlock>
    ...
</UserControl>

Et je souhaiterais invoquer mon composant de la sorte :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
<MyControl />
ou
<MyControl Mini="True" />
Le style fonctionne si je change la valeur par défaut dans le new PropertyMetadata().
En revanche, le trigger n'a pas l'air de fonctionner : que je mette Mini="True" ou non, le composant reste à l'état normal...