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

C# Discussion :

C# popup qui n'apparait pas


Sujet :

C#

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 21
    Points : 8
    Points
    8
    Par défaut C# popup qui n'apparait pas
    Bonjour,

    Je viens avec une petite énigme que j'espère vous pourrez m'aider à résoudre.
    Je tente de créer un popup pour faire de l’auto-complétion, mais pour une raison que j'ignore le popup n'apparait pas quand je lance le programme.
    depuis le concepteur je peux voir le popup quand je clique dessus dans le code XAML mais quand je lance le programme rien à faire, il n'apparaît pas. J'ai tenté de jouer sur l'indice Z des éléments, j'ai même tenté de mettre un textblock "test" à l'intérieur mais rien à faire.

    voici le 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
          <Grid x:Name="popupEditorGrid" Grid.Column="1" Panel.ZIndex="10" Visibility="Visible">
                        <Popup Placement="Top" Visibility="Visible" StaysOpen="True" IsOpen="true" Panel.ZIndex="1000" x:Name="EditorPopup"  Grid.Column="1"  Width="{Binding Path=ActualWidth, ElementName=editorInputColumn}">
                            <StackPanel x:Name="EditorPopupStackPanel">
                                <StackPanel.Background>
                                    <SolidColorBrush Color="{DynamicResource EllipseSecondary}"/>
                                </StackPanel.Background>
                                <TextBlock Text="test"/><!--ce textblock est un test, il apparait dans le concepteur mais pas quand le programme tourne...-->
                            </StackPanel>
                        </Popup>
                    </Grid>
    <TextBox Grid.Column="1" KeyUp="editorAddInput_KeyUp" x:Name="editorAddInput" >
                        <TextBox.BorderBrush>
                            <SolidColorBrush Color="{DynamicResource BoutonMarge}"/>
                        </TextBox.BorderBrush>
                    </TextBox>
    et le C#:
    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
    private void editorAddInput_KeyUp(object sender, System.Windows.Input.KeyEventArgs e)
            {
                string lastInput;
     
    //La textbox de saisie est prévue pour pouvoir récupérer plusieurs noms et les séparer, ici je veux donc récupérer uniquement le dernier de la liste
                List<string> inputList = editorAddInput.Text.ToUpper().Split(',', ';').ToList();
     
                if (inputList.Count != 0)
                {
                    lastInput = inputList[inputList.Count - 1];
                }
                else
                {
                    lastInput = editorAddInput.Text;
                }
     
                List<Editor> matchingEditorsList = new List<Editor>();
     
    //Vide la liste précédente
                EditorPopupStackPanel.Children.Clear();
     
     
                foreach(Editor editor in localEditorsList)//Cherche dans la liste des tous les éditeurs connus jusqu'ici
                {
                    if(editor.Name.StartsWith(lastInput))
                    {
                        matchingEditorsList.Add(editor);
                    }
                }
     
                if(matchingEditorsList.Count!=0)
                {
                    EditorPopup.Visibility = Visibility.Visible;
     
                    foreach(Editor editor in matchingEditorsList)
                    {
                        EditorPopupStackPanel.Children.Add(new TextBlock() { Text = editor.Name });         
                    }
                    EditorPopup.StaysOpen = true;
                    EditorPopup.IsOpen = true;
     
                }
                else
                {
                    EditorPopup.Visibility = Visibility.Collapsed;
                    EditorPopup.IsOpen = false;
                }
            }
    L'idée est de proposer à l'utilisateur des noms déjà connus qui commencent par les mêmes lettres, qui sera ensuite rajouté dans la textbox si il sélectionne le nom dans le popup.

    Quelqu'un à une idée de pourquoi ce popup n'apparaît pas?

  2. #2
    Membre du Club

    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 47
    Points : 68
    Points
    68
    Par défaut
    t'as essayé de faire la meme chose avec comboBox ?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    Très bonne idée, je n'avais pas essayé! Je ne connaissais pas les ComboBox , je ne pensais pas qu'elles pouvaient s'utiliser comme ça.
    ça a l'air plutôt bien parti , mais j'ai un problème avec l'affichage une fois l'élément sélectionné
    mon xaml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <ComboBox Grid.Column="1"  x:Name="editorComboBox" IsEditable="True">
                            <ComboBox.ItemTemplate>
                                <DataTemplate>
                                    <TextBlock Text="{Binding Name}"/>
                                </DataTemplate>
                            </ComboBox.ItemTemplate>
                        </ComboBox>
    Je la remplie depuis le constructeur de la fenêtre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    editorComboBox.ItemsSource = localEditorsList;
    Les objets sont très simples:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     public partial class Editor 
        {
            public string Name { get; set; }
        }
    Le remplissage se passe très bien, mais quand je sélectionne un objet dans la ComboBox, au lieu de m'afficher la propriété "Name" de l'objet, elle affiche "BoardGamePicker.Editor" (BoardGamePicker étant mon nom de solution), une idée de ce que je rate?

  4. #4
    Membre du Club

    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 47
    Points : 68
    Points
    68
    Par défaut
    essaie de le remplir de cette façon :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    MonComboBox.items.add("chaine de caractere");

    si tu veux faire plusieurs trucs, fais une boucle.

    c'est pas la seul solution mais voila.

    pour l'affichage du contenu c'est que t'as mal rempli ta liste par exemple en oubliant de mettre maVariable.ToString si elle ne l'est pas de base...

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    Je me suis mal exprimé pardon, en fait le remplissage se passe nickel, mes objets apparaissent bien dans la liste de la combobox "déroulée" en affichant la propriété Name , tout comme je le veux, mais c'est seulement quand je sélectionne un des objets de la liste que l'affichage de la combobox "fermée" n'affiche plus la propriété Name de l'objet, mais "BoardGamePicker.Editor".

    La liste avec laquelle je remplis la combobox est une List<Editor> qui ne contient que des objets de la classe Editor qui contiennent une propriété Name (qui elle est une string), c'est pour ça que dans la Template de la combobox j'ai mis un textBlock avec la propriété Text="{Binding Name}". Est ce qu'il faut que je déclare un Binding dans la combobox également? et si oui pour quelle propriété?

  6. #6
    Membre du Club

    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 47
    Points : 68
    Points
    68
    Par défaut
    je ne peux pas t'aider avec l'xml (je travail qu'en wind form) mais tu peux mettre ton code c# parce que dit comme ça je ne voit pas ce que sa pourrait etre.

    sa peut venir de ta methode de remplissage mais pas sur => comboBox.itemSource = ....
    moi je fais toujours comboBox.items.add();

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    Finalement j'ai réussi à m'en sortir !

    J'ai juste supprimé le Template de ma ComboBox et à la place j'ai ajouté à ma ComboBox la propriété DisplayMemberPath :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <ComboBox Grid.Column="1" DisplayMemberPath="style" x:Name="styleComboBox" IsEditable="True"/>
    Et là ça fonctionne nickel. Merci pour la suggestion en tous cas!

    N'empêche que je me demande quand même pourquoi mon popup ne voulait pas apparaitre... ça restera un mystère je pense.

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

Discussions similaires

  1. Elément qui n'apparait pas dans le SELECT
    Par mattyeux dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 06/11/2007, 17h04
  2. [VS.NET]MenuStrip qui n'apparait pas
    Par LordBob dans le forum Visual Studio
    Réponses: 2
    Dernier message: 29/11/2006, 18h08
  3. VB6 Un popup qui n'affecte pas le travail
    Par Vortal dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 28/11/2006, 17h53
  4. Réponses: 5
    Dernier message: 12/11/2005, 09h45
  5. Problem fond qui n'apparait pas sous FF.
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 26/09/2005, 22h05

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