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 :

[VB.NET] Interface Dynamique ?


Sujet :

Windows Presentation Foundation

  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 63
    Par défaut [VB.NET] Interface Dynamique ?
    Bonjour,

    J'ai une fenêtre qui contient un certain nombre de label. Mais ce nombre change en fonction de certaines données. Je ne sais donc pas combien je dois créer de label. J'aimerai que les labels se positionnent l'un après l'autre.
    Pour cela je fais :
    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
     
    Dim TAB(1000) As Label
    Dim i As Integer = 0
    For Each entry In ev.Entries
     EntType = entry.EntryType.ToString
     If EntType = "Error" Then
      TAB(i) = New Label
      TAB(i).Width = 433
      TAB(i).Height = 32
      If i = 0 Then
       TAB(i).Margin = New Thickness(189.5, 67.374, 9.5, 12)
      Else
       TAB(i).Margin = New Thickness(189.5, TAB(i - 1).Margin.Top + 32, 9.5,12)
      End If
      Me.LayoutRoot.Children.Add(TAB(i))
      i += 1
     End If
    Next
    tab étant un tableau de Label.
    Cela ne fonctionne pas, je ne comprends pas pourquoi.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    C'est du WPF je suppose ?

    Déjà tu n'affectes jamais le Content du Label, donc probablement que ton code fonctionne, mais comme il n'y a rien dans le Label tu ne le vois pas.

    D'autre part, cette façon de faire n'est pas du tout dans l'esprit de WPF. Tu ferais mieux d'utiliser un ItemsControl avec un DataTemplate...

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <ItemsControl Name="listEntries">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel Orientation="Vertical" IsItemsHost="True" />
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Label Content="{Binding EntryType}" Width="433" Height="32" />
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>

    Et dans ton code :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    listEntries.ItemsSource = ev.Entries;

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 63
    Par défaut
    C'est bien du WPF.
    Oui mais j'avais essayer en mettant le fond en rouge pour que les labels s"affichent et ils ne se mettent pas du tout où je souhaite.

    Que veux tu dire par l'esprit de WPF ?

    Malheureusement je ne m'y connais pas beaucoup en WPF, je ne connaissais pas les ItemsControl... Je vais essayer de regarder cela.

    Merci

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Nuage31 Voir le message
    Que veux tu dire par l'esprit de WPF ?
    Je veux dire que le code que tu as écrit, c'est le genre de chose qu'on aurait fait en Windows Forms... En WPF on n'utilise pas du tout ce genre d'approche (ajouter en boucle des contrôles sur une fenêtre), on utilise plutôt le système de binding, des styles, des templates, etc...

    Regarde cette série de tuto, ça devrait t'ouvrir les yeux
    http://tlevesque.developpez.com/trad...f-guided-tour/

  5. #5
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 63
    Par défaut
    Je vais regarder cela merci.

    En tout cas j'ai réussi grâce à cela à bien créer des labels. Mais lorsque je ferme la fenêtre puis que je l'ouvre à nouveau, il faut que je supprime les labels avant (vu que le nombre de label change). Je ne trouve pas comment vider un ItemControl

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Nuage31 Voir le message
    Mais lorsque je ferme la fenêtre puis que je l'ouvre à nouveau, il faut que je supprime les labels avant (vu que le nombre de label change). Je ne trouve pas comment vider un ItemControl
    L'ItemsControl génère les labels à partir de la liste définie comme ItemsSource, donc il suffit que tu changes l'ItemsSource pour changer les éléments affichés. Si la liste utilisée comme source est une ObservableCollection(Of T), les modifications sur la liste (ajouts et suppressions) seront immédiatement pris en compte par l'ItemsControl

Discussions similaires

  1. Interface dynamique hybride : VB.Net, .Net, Windev
    Par b0n0b0 dans le forum Windows Forms
    Réponses: 11
    Dernier message: 16/05/2011, 20h58
  2. [VB.NET] Contrôle dynamique et évènements
    Par johann.C dans le forum ASP.NET
    Réponses: 4
    Dernier message: 30/11/2009, 10h45
  3. [CR.NET]Chargement dynamique d'une image
    Par Moah dans le forum SAP Crystal Reports
    Réponses: 8
    Dernier message: 14/12/2004, 11h46
  4. [C++ .NET] Structure dynamique
    Par tidou dans le forum VC++ .NET
    Réponses: 17
    Dernier message: 29/10/2004, 20h08
  5. [C++ .NET] Tableau dynamique
    Par tidou dans le forum VC++ .NET
    Réponses: 18
    Dernier message: 10/10/2004, 15h11

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