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] wpf trigger pour radio bouton et checkbox


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2
    Par défaut [VB.NET] wpf trigger pour radio bouton et checkbox
    Bonjour à tous,
    j'ai un petit soucis :
    j'aimerais faire un datagrid qui a une colonne radio bouton et une colonne check box --> jusque là pas de problème
    quand le radio bouton est checké, il faut que le checkbox soit non checké et devienne inactif.
    Je suppose que je dois utiliser des triggers...mais comment setter la propriété isChecked du checkbox avec un trigger mis sur le radio bouton?


    Voici le code actuel :
    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
    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
    <Window x:Class="MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
     
        <Grid>
            <Button Content="Charger les clients" Height="23" HorizontalAlignment="Left" Margin="56,38,0,0" Name="Button1" VerticalAlignment="Top" Width="291" />
            <DataGrid x:Name="dataGrid5" 
        Height="125" Margin="0,5,0,10"
        AutoGenerateColumns="False"
        RowBackground="Azure"
        AlternatingRowBackground="LightSteelBlue">
                <DataGrid.Columns>
                    <!-- Name Column -->
                    <DataGridTemplateColumn Header="Name">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <StackPanel Orientation="Horizontal" VerticalAlignment="Center">
                                    <TextBlock Padding="5,0,5,0"
                                Text="{Binding FirstName}"/>
                                    <TextBlock Text="{Binding LastName}" Name="LeNom"/>
                                </StackPanel>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                        <DataGridTemplateColumn.CellEditingTemplate>
                            <DataTemplate>
                                <StackPanel Orientation="Horizontal">
                                    <TextBox Text="{Binding FirstName}" BorderThickness="0"/>
                                    <TextBox Text="{Binding LastName}" BorderThickness="0"/>
                                </StackPanel>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellEditingTemplate>
                    </DataGridTemplateColumn>
                    <!-- Address Column -->
                    <DataGridTextColumn
                Header="Address" Width="200"
                Binding="{Binding Address}" />
                <!--RadioButton Column-->
                <DataGridTemplateColumn Header="RadioBouton">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <StackPanel Orientation="Horizontal" VerticalAlignment="Center">
                                    <RadioButton Padding="5,0,5,0" IsChecked="{Binding IsSubscribed}"  GroupName="rbSecu" Name="monrb"/>
                            </StackPanel>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                  </DataGridTemplateColumn>
                    <!--CheckBox Column-->
                    <DataGridTemplateColumn Header="Check Box">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <StackPanel Orientation="Horizontal" VerticalAlignment="Center">
                                    <CheckBox Padding="5,0,5,0" IsChecked="{Binding IsNew}" Name="monCheckBox" >
    <!--                                        <DataTrigger Binding="{Binding IsChecked, ElementName=monrb}" Value="True">
                                                  <Setter Property="Enabled" Value="False" />
                                                <Setter TargetName="monCheckBox" Property="isChecked" Value="False" />
                                          </DataTrigger>
    -->                                </CheckBox>
                                </StackPanel>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                </DataGrid.Columns>
             </DataGrid>
            <Button Content="Enregistrer" Height="23" HorizontalAlignment="Left" Margin="408,232,0,0" Name="bEnreg" VerticalAlignment="Top" Width="75" />
        </Grid>         
     
    </Window>
    J'ai fait des tests de triggers mais ça ne marche pas.
    Alors un coup de main ça ferait pas de mal

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Salut,

    Une solution possible est d'utiliser des Converter sur la CheckBox :

    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
      public class CheckConverter : IMultiValueConverter {
        public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
          if (values[0].GetType() != typeof(bool) || values[1].GetType() != typeof(bool))
            return false;
     
          bool isSubscribed = (bool)values[0];
          bool isNew = (bool)values[1];
     
          return isSubscribed ? false : isNew;
        }
     
        public object[] ConvertBack(object value, Type[] targetType, object parameter, System.Globalization.CultureInfo culture) {
          return new object[] { false, (bool)value };
        }
      }
     
      public class InvBoolConverter : IValueConverter {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
          bool isSubscribed = (bool)value;
     
          return !isSubscribed;
        }
     
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
          throw new NotImplementedException();
        }
      }

    Code xml : 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
      <Window.Resources>
        <local:InvBoolConverter x:Key="InvBoolConv" />
        <local:CheckConverter x:Key="CheckConv" />
      </Window.Resources>
     
      <Grid>
        <Button Content="Charger les clients" Height="23" HorizontalAlignment="Left" Margin="56,38,0,0" Name="Button1" VerticalAlignment="Top" Width="291" />
        <dg:DataGrid x:Name="dataGrid5" Height="125" Margin="0,5,0,10" AutoGenerateColumns="False"
                     RowBackground="Azure" AlternatingRowBackground="LightSteelBlue" >
          <dg:DataGrid.Columns>
            <!-- Name Column -->
            <dg:DataGridTemplateColumn Header="Name">
              <dg:DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                  <StackPanel Orientation="Horizontal" VerticalAlignment="Center">
                    <TextBlock Padding="5,0,5,0" Text="{Binding FirstName}"/>
                    <TextBlock Text="{Binding LastName}" Name="LeNom"/>
                  </StackPanel>
                </DataTemplate>
              </dg:DataGridTemplateColumn.CellTemplate>
              <dg:DataGridTemplateColumn.CellEditingTemplate>
                <DataTemplate>
                  <StackPanel Orientation="Horizontal">
                    <TextBox Text="{Binding FirstName}" BorderThickness="0"/>
                    <TextBox Text="{Binding LastName}" BorderThickness="0"/>
                  </StackPanel>
                </DataTemplate>
              </dg:DataGridTemplateColumn.CellEditingTemplate>
            </dg:DataGridTemplateColumn>
            <!-- Address Column -->
            <dg:DataGridTextColumn Header="Address" Width="200" Binding="{Binding Address}" />
            <!--RadioButton Column-->
            <dg:DataGridTemplateColumn Header="RadioBouton">
              <dg:DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                  <RadioButton Padding="5,0,5,0" IsChecked="{Binding IsSubscribed}" GroupName="rbSecu" />
                </DataTemplate>
              </dg:DataGridTemplateColumn.CellTemplate>
            </dg:DataGridTemplateColumn>
            <!--CheckBox Column-->
            <dg:DataGridTemplateColumn Header="Check Box">
              <dg:DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                  <CheckBox Padding="5,0,5,0" IsEnabled="{Binding IsSubscribed, Converter={StaticResource InvBoolConv}}" >
                    <CheckBox.IsChecked>
                      <MultiBinding Converter="{StaticResource CheckConv}" >
                        <Binding Path="IsSubscribed" />
                        <Binding Path="IsNew" />
                      </MultiBinding>
                    </CheckBox.IsChecked>
                  </CheckBox>
                </DataTemplate>
              </dg:DataGridTemplateColumn.CellTemplate>
            </dg:DataGridTemplateColumn>
          </dg:DataGrid.Columns>
        </dg:DataGrid>
        <Button Content="Enregistrer" Height="23" HorizontalAlignment="Left" Margin="408,232,0,0" Name="bEnreg" VerticalAlignment="Top" Width="75" />
      </Grid>

  3. #3
    Candidat au Club
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2
    Par défaut
    Bonjour,
    merci pour cette réponse. c'est mon premier projet wpf et quand je recopie ton code, j'ai des messages d'erreurs. je suppose que l'explication est très simple, mais je ne la connait pas :

    Erreur 1 Le type 'local:Inv1BoolConverter' est introuvable. Assurez-vous qu'il ne manque aucune référence d'assembly et que tous les assemblys référencés ont été générés.

    Erreur 2 Le type 'local:CheckConverter' est introuvable. Assurez-vous qu'il ne manque aucune référence d'assembly et que tous les assemblys référencés ont été générés.

    Erreur 3 Le type 'dgataGrid' est introuvable. Assurez-vous qu'il ne manque aucune référence d'assembly et que tous les assemblys référencés ont été générés.

    Erreur 4 La propriété pouvant être attachée 'Columns' est introuvable dans le type 'DataGrid'.

    Erreur 5 Le type 'dgataGridTemplateColumn' est introuvable. Assurez-vous qu'il ne manque aucune référence d'assembly et que tous les assemblys référencés ont été générés.
    je suppose qu'il y a des namespaces à déclarer mais je ne sais pas comment?

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Citation Envoyé par HelloWorldsss
    je suppose qu'il y a des namespaces à déclarer mais je ne sais pas comment?
    En effet.
    Les deux premières erreurs sont dues à l'absence du namespace :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <Window x:Class="MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     
        xmlns:local="clr-namespace:WpfApplication1"
     
        Title="MainWindow" Height="350" Width="525">
     
    ...
    où WpfApplication1 est le nom du Namespace de ton projet (nom que tu peux retrouver en faisant un clic droit sur ton projet, puis "Propriétés" et dans l'onglet "Application", tu peux retrouver l'espace de nom de ton projet).

    Les autres erreurs sont dues au fait que j'ai testé sur un projet utilisant le framework 3.5. Et j'ai donc utilisé la DataGrid du WPFToolkit.
    Toi tu utilises la DataGrid du framework 4.0 donc si tu supprimes tous les "dg:" présents, ça devrait compiler sans problème.

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/06/2011, 13h45
  2. changement d'etat pour un bouton radio
    Par tilily dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 09/03/2011, 18h11
  3. validation radio bouton et checkbox
    Par jjouc dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 21/09/2010, 12h04
  4. [1.x] Valeur par défaut pour un bouton radio
    Par Malonix dans le forum Symfony
    Réponses: 6
    Dernier message: 27/04/2009, 09h37
  5. [CR][VB.NET]Radio bouton
    Par Sunny dans le forum SDK
    Réponses: 2
    Dernier message: 21/01/2006, 15h03

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