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 :

Comment créer facilement une liste de radiobutton ?


Sujet :

Windows Presentation Foundation

  1. #1
    Membre confirmé Avatar de WebPac
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 947
    Points : 512
    Points
    512
    Par défaut Comment créer facilement une liste de radiobutton ?
    Bonjour,
    je souhaiterais faire une liste de radiobutton, qu'elle soit bindée à une liste d'objets métiers et aussi avoir une référence bindée sur l'élement checked.

    J'ai réussi à trouver une solution, mais je la trouve compliquée et je me dis qu'il doit exister des façon bien plus simples pour le faire.

    J'ai été aussi obligé de relier la propriété IsSelected de la ListBox à la propriété IsChecked du RadioButton, pour pouvoir ensuite retrouver l'item checked via l'élément sélectionné dans la listbox, mais ça implique à forcément avoir l'élément checked sélectionné.

    De plus, j'ai été obligé de faire une propriété Selected dans le code behind, qui "mappe" la propriété Selected de la classe MyItem, ne peut-on pas le faire directement ?

    Voici mon code :

    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
    namespace TestRadioButton
    {
        public class MyItem
        {
            public string Nom { get; set; }
     
            public static List<MyItem> Liste
            {
                get { return new List<MyItem> { new MyItem { Nom = "Item1" }, new MyItem { Nom = "Item2" }, new MyItem { Nom = "Item3" } }; }
            }
     
            public static MyItem Selected { get; set; }
        }
    }

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    namespace TestRadioButton
    {
        /// <summary>
        /// Logique d'interaction pour MainWindow.xaml
        /// </summary>
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
     
                this.DataContext = this;
            }
     
            public MyItem Selected
            {
                get { return MyItem.Selected; }
                set { MyItem.Selected = value; }
            }
     
            private void btnTest_Click(object sender, RoutedEventArgs e)
            {
                if (MyItem.Selected == null)
                    MessageBox.Show("Il est null");
                else
                    MessageBox.Show(MyItem.Selected.Nom);
            }
        }
    }

    Code XAML : 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
    <Window x:Class="TestRadioButton.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:test="clr-namespace:TestRadioButton"
            Title="MainWindow" Height="240" Width="320">
     
        <Window.Resources>
            <ObjectDataProvider x:Key="odpListe"                              
                                ObjectType="{x:Type test:MyItem}"
                                MethodName="get_Liste"/>
        </Window.Resources>
        <DockPanel>
            <Button Name="btnTest" Content="Test" Click="btnTest_Click" DockPanel.Dock="Bottom"/>
     
            <ListBox Name="lbOperateur" Grid.Column="1"
                        ItemsSource="{Binding Source={StaticResource odpListe}}"
                        SelectedItem="{Binding Selected}">
                <ListBox.ItemsPanel>
                    <ItemsPanelTemplate>
                        <UniformGrid Columns="1"/>
                    </ItemsPanelTemplate>
                </ListBox.ItemsPanel>
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <RadioButton Content="{Binding Path=Nom}" GroupName="gOperateur"
                                     IsChecked="{Binding Path=IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBoxItem}}}"/>
                    </DataTemplate>                
                </ListBox.ItemTemplate>
            </ListBox>
        </DockPanel>
    </Window>

    Merci d'avance pour vos conseils sur le sujet.

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

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 576
    Points : 998
    Points
    998
    Par défaut
    Hello,

    Dans le bag of trick WPF il y ce contrôle.
    Le plus simple c'est de l'utiliser
    Jonathan ANTOINE - Découvrez mon livre: MVVM, de la découverte à la maîtrise.

    Microsoft MVP Client Application Development
    - MCPD Windows 4.0, etc.
    Mon blog : http://www.jonathanantoine.com

  3. #3
    Membre confirmé Avatar de WebPac
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 947
    Points : 512
    Points
    512
    Par défaut
    Merci, je viens d'aller voir ce projet, j'ai téléchargé et juste pris le bout de code qui m'intéressait dedans et ça fonctionne mieux.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 01/08/2006, 18h06
  2. [Procédure stockée] Comment travailler sur une liste de ...
    Par WwiloO dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 13/02/2006, 11h22
  3. Réponses: 11
    Dernier message: 22/09/2005, 10h21
  4. Réponses: 5
    Dernier message: 09/08/2005, 17h38

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