IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Presentation Foundation Discussion :

[WPF] UserControl help !


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Par défaut [WPF] UserControl help !
    Bonjour à tous,

    je voudrais faire une sorte de UserControl Container un peu comme les grids / StackPanel ... Je voudrais entre autre pouvoir ajouter des composants à l'intérieur du mien, tout les UserControl que j'ai fais jusqu'à présent, je ne pouvais rien rajouter dedans ! Entre autre je voudrais que mon control réagisse de la manières suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            <Desktop:AnimatedCircle Grid.Column="0" Grid.Row="1" >
                <Button Width="50" Height="50" />
                <Button Width="50" Height="50" />
                <Button Width="50" Height="50" />
                <Button Width="50" Height="50" />
                <Button Width="50" Height="50" />
            </Desktop:AnimatedCircle>
    Ce qui aurait un rendu de tel sorte :



    Si quelqu'un savait comment procéder juste pour faire un StackPanel je m'occuperais de possitionner les contrôles sur un cercle.

    Merci d'avance.

    Cordialement,
    NeoKript

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Par défaut
    C'est exactement ca que je cherchais ! Merci j'ai juste modifier pour que ca soit un cercle et non une ellipse.

    Merci encore !

    Au passage j'ai quelque soucis avec un contrôle de rating que j'ai fais,
    la note s'affiche bien progressivement quand la souris passe dessus les images.
    Quand je clique je vérouille bien la note, cependant quand je bind en xaml la note Mark="{Binding Note}" tant que le controle n'a pas eu le focus au moins une fois, aucune note ne s'affiche et je ne vois pas ou est le problème. Si vous pouviez m'aider !

    Voici mon code :

    .xaml
    Code : 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    <UserControl x:Class="Desktop.UserControls.Rank"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:Img="clr-namespace:Desktop.UserControls"
        Height="26" Width="140">
        <UserControl.Resources>
            <Img:Converter_NumberMark x:Key="Converter1" />
            <Img:Converter_MarkVisibility x:Key="Converter2" />
        </UserControl.Resources>
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="10" />
                <ColumnDefinition Width="26" />
                <ColumnDefinition Width="26" />
                <ColumnDefinition Width="26" />
                <ColumnDefinition Width="26" />
                <ColumnDefinition Width="26" />
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="26" />
            </Grid.RowDefinitions>
            <Img:ImageType Width="10" Height="26" Grid.Row="0" Grid.Column="0" Source="../Ressources/Rank/Empty.png" Number="0"  MouseEnter="ImageType_MouseEnter" MouseLeave="ImageType_MouseLeave" MouseLeftButtonDown="ImageType_MouseLeftButtonDown" />
            <Img:ImageType Width="26" Height="26" Grid.Row="0" Grid.Column="1" Source="../Ressources/Rank/Rank.png" Number="1" MouseEnter="ImageType_MouseEnter" MouseLeave="ImageType_MouseLeave" MouseLeftButtonDown="ImageType_MouseLeftButtonDown" Opacity="{Binding CurrentMark, Converter={StaticResource Converter1}, ConverterParameter=1}" />
            <Img:ImageType Width="26" Height="26" Grid.Row="0" Grid.Column="2" Source="../Ressources/Rank/Rank.png" Number="2" MouseEnter="ImageType_MouseEnter" MouseLeave="ImageType_MouseLeave" MouseLeftButtonDown="ImageType_MouseLeftButtonDown" Opacity="{Binding CurrentMark, Converter={StaticResource Converter1}, ConverterParameter=2}" />
            <Img:ImageType Width="26" Height="26" Grid.Row="0" Grid.Column="3" Source="../Ressources/Rank/Rank.png" Number="3" MouseEnter="ImageType_MouseEnter" MouseLeave="ImageType_MouseLeave" MouseLeftButtonDown="ImageType_MouseLeftButtonDown" Opacity="{Binding CurrentMark, Converter={StaticResource Converter1}, ConverterParameter=3}" />
            <Img:ImageType Width="26" Height="26" Grid.Row="0" Grid.Column="4" Source="../Ressources/Rank/Rank.png" Number="4" MouseEnter="ImageType_MouseEnter" MouseLeave="ImageType_MouseLeave" MouseLeftButtonDown="ImageType_MouseLeftButtonDown" Opacity="{Binding CurrentMark, Converter={StaticResource Converter1}, ConverterParameter=4}" />
            <Img:ImageType Width="26" Height="26" Grid.Row="0" Grid.Column="5" Source="../Ressources/Rank/Rank.png" Number="5" MouseEnter="ImageType_MouseEnter" MouseLeave="ImageType_MouseLeave" MouseLeftButtonDown="ImageType_MouseLeftButtonDown" Opacity="{Binding CurrentMark, Converter={StaticResource Converter1}, ConverterParameter=5}" />
            <TextBlock Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="5" Text="Pas de note" VerticalAlignment="Center" HorizontalAlignment="Center" FontWeight="Bold" FontSize="15" Visibility="{Binding Mark, Converter={StaticResource Converter2}}" />
        </Grid>
    </UserControl>
    .cs
    Code : 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
     
    namespace Desktop.UserControls
    {
        /// <summary>
        /// Logique d'interaction pour Rank.xaml
        /// </summary>
        public partial class Rank : UserControl
        {
    #region Constructeur
            public Rank()
            {
                InitializeComponent();
                this.DataContext = this;
                this.Loaded += new RoutedEventHandler(Rank_Loaded);
            }
            void Rank_Loaded(object sender, RoutedEventArgs e)
            {
                this.CurrentMark = this.Mark;
            }
            #endregion
            #region DependencyProperty
            public static DependencyProperty CurrentMarkProperty = DependencyProperty.Register("CurrentMark", typeof(Int32), typeof(Rank));
            public Int32 CurrentMark
            {
                get { return (Int32)(this.GetValue(CurrentMarkProperty)); }
                set
                {
                    this.SetValue(CurrentMarkProperty, (Int32)value);
     
                }
            }
            public static DependencyProperty MarkProperty = DependencyProperty.Register("Mark", typeof(Int32), typeof(Rank));
            public Int32 Mark
            {
                get { return (Int32)(this.GetValue(MarkProperty)); }
                set { 
                    this.SetValue(MarkProperty, (Int32)value);
     
                }
            }
            #endregion
     
            private void ImageType_MouseEnter(object sender, MouseEventArgs e)
            {
                if (this.IsEnabled)
                {
                    ImageType Img = sender as ImageType;
                    this.CurrentMark = Img.Number;
                }
     
            }
     
            private void ImageType_MouseLeave(object sender, MouseEventArgs e)
            {
                if (this.IsEnabled)
                {
                    this.CurrentMark = this.Mark;
                }
            }
     
            private void ImageType_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
            {
                if (this.IsEnabled)
                {
                    this.Mark = this.CurrentMark;
                }
            }
     
        }
     
        public class ImageType : Image
        {
            public Int32 Number
            {
                get;
                set;
            }
        }
     
        class Converter_MarkVisibility : IValueConverter
        {
            public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                Int32 Mark = (Int32)value;
                if (Mark == -1)
                    return (Visibility.Visible);
                return (Visibility.Hidden);
     
            }
     
            public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                throw new NotImplementedException();
            }
        }
        class Converter_NumberMark : IValueConverter
        {
            public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                Int32 Mark = (Int32)value;
                Int32 Number = System.Convert.ToInt32(parameter);
                if (Mark >= Number)
                    return (1);
                return (0.3);
     
            }
     
            public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                throw new NotImplementedException();
            }
        }
    }
    Merci d'avance

  4. #4
    Membre émérite Avatar de jmix90
    Homme Profil pro
    Consultant .Net
    Inscrit en
    Juillet 2007
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2007
    Messages : 576
    Par défaut
    Citation Envoyé par NeoKript Voir le message
    Au passage j'ai quelque soucis avec un contrôle de rating que j'ai fais,
    la note s'affiche bien progressivement quand la souris passe dessus les images.
    Quand je clique je vérouille bien la note, cependant quand je bind en xaml la note Mark="{Binding Note}" tant que le controle n'a pas eu le focus au moins une fois, aucune note ne s'affiche et je ne vois pas ou est le problème
    Aucune note ne s'affiche ou ?

  5. #5
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Par défaut
    En gros quand je fais dans mon control Mark="3" là ya bien les 3 étoiles mais si je bind mark sur le SelectedIndex d'un combobox ca ne fonctionne pas.

  6. #6
    Membre émérite Avatar de jmix90
    Homme Profil pro
    Consultant .Net
    Inscrit en
    Juillet 2007
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2007
    Messages : 576
    Par défaut
    Citation Envoyé par NeoKript Voir le message
    En gros quand je fais dans mon control Mark="3" là ya bien les 3 étoiles mais si je bind mark sur le SelectedIndex d'un combobox ca ne fonctionne pas.
    Même si il y a bien 4 items dans ta combobox ?

    D'ailleurs, c'est pas plutôt selectedValue que tu devrais binder ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C# WPF] Usercontrol button supprimer
    Par luc648 dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 06/06/2010, 17h40
  2. [WPF] UserControl et Click
    Par NeoKript dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 27/03/2010, 17h54
  3. [WPF] UserControl -> binding ??
    Par UNi[FR] dans le forum C#
    Réponses: 1
    Dernier message: 10/09/2007, 11h31
  4. [WPF] UserControl pour un historique de nav
    Par UNi[FR] dans le forum Windows Presentation Foundation
    Réponses: 8
    Dernier message: 10/09/2007, 11h19
  5. [WPF] UserControl: impossible à ajouter à la toolbox
    Par SoBaKa dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 23/05/2007, 09h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo