Partage
  • Partager sur Facebook
  • Partager sur Twitter

[WPF] Binding avec DependencyProperty

    5 juin 2019 à 0:31:03

    Bonjour, je suis débutant en WPF et dans le cadre d'un projet, j'essaie d'afficher un certain nombre de fois la même image en fonction d'un int envoyé en paramètre (une échelle de difficulté où plus le chiffre est grand et plus l'image apparaît), j'ai décidé de faire une DependencyProperty pour envoyer la valeur en question à un userControl qui a pour but d'afficher l'image, mais c'est à partir de là que tout ce corse et où j'ai du mal:

    Mon xaml pour l'affichage global (également un UserControl)

    ...
    <Grid>
            <StackPanel Margin="3" Grid.Column="2" Grid.Row="0" Background="#FFF9E2">
    
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="0.5*"/>
                        <ColumnDefinition Width="0.5*"/>
                    </Grid.ColumnDefinitions>
    
                    <Grid.RowDefinitions>
                        <RowDefinition Height="0.1*"/>
                        <RowDefinition Height="0.1*"/>                    
                        <RowDefinition Height="0.1*"/>
                    </Grid.RowDefinitions>
    
           
    
                    <StackPanel Name="AffichageDiff" Margin="3" Grid.Column="0" Grid.Row="1" Orientation="Horizontal" >
                        <Label Content="Difficulté :"/>
                        <TextBlock Text="{Binding Difficulte}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2"/>
                        <local1:AffichageDifficulte  Difficulte="{Binding Difficulte}"/>
                    </StackPanel>
                </Grid>
            </StackPanel>
        </Grid>
    ...

    Mon xaml pour l'affichage de l'image en elle même

    <Grid>
        <StackPanel Name="StackPanel_Diff" Background="#FFF9E2">
            <Image Name="Image_diff" Source="/Galerie;Component/Utiles/Star.jpg" Height="30" Width="30" HorizontalAlignment="Left"/>
        </StackPanel>
    </Grid>


    Le code-behind de l'affichage de l'image

    public partial class AffichageDifficulte : UserControl
        {
            public readonly DependencyProperty DifficulteProperty;
    
            public int Difficulte
            {
                get
                {
                    return (int)GetValue(DiffProperty);
                }
                set
                {
                    SetValue(DiffProperty, value);
                }
            }
    
            public AffichageDifficulte()
            {
                InitializeComponent();
                if(Difficulte != 0)
                {
                    StackPanel_Diff.Children.Add(new AffichageDifficulte());
                    Difficulte--;
                }
    
    
            }
            static AffichageDifficulte()
            {
                AffichageDifficulte.DiffProperty = DependencyProperty.Register(
                    nameof(AffichageDifficulte.Difficulte),
                    typeof(int), 
                    typeof(AffichageDifficulte),
                    new PropertyMetadata(0));
            }
            public static readonly DependencyProperty DiffProperty;
        }


    C'est vraiment la première fois que je sèche autant sur un problème, surtout que c'est la première fois que j'utilise la DependencyProperty :(.

    Merci de votre aide !

    Valentin.

    • Partager sur Facebook
    • Partager sur Twitter

    [WPF] Binding avec DependencyProperty

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown