2011-12-06 1 views
0

J'ai 4 boutons radio dans un groupe. En cliquant sur le bouton radio, l'état sera changé en IsChecked = true. Je souhaite changer l'état du bouton radio en IsChecked = false lorsque j'ai cliqué sur un bouton radio coché. Est-ce possible en XAML?Est-il possible de définir l'état d'un radioButton dans IsChecked = false lors d'un second clic?

+0

peut-être quelque chose comme si (isChecked == true) isChecked = false; d'autre isChecked = true; – Gero

+0

La base de données Radiobuttons est-elle? –

+0

non les radioButtons ne sont pas limités par des données. – Mitc

Répondre

0

Vous devez garder une trace de l'état vérifié de quatre boutons radio dans le groupe. Chaque fois que vous cliquez sur l'un des boutons radio, vous devez mettre à jour l'état avec le plus récent. Voici le code que vous pouvez essayer.

code XAML ....

<UserControl x:Class="SilverlightApplication1.MainPage" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
mc:Ignorable="d" 
d:DesignHeight="300" d:DesignWidth="400"> 

<StackPanel x:Name="LayoutRoot" Background="White"> 
    <RadioButton GroupName="LotOfFour" Tag="0" Click="RadioButton_Click" Checked="RadioButton_Checked" Unchecked="RadioButton_Unchecked"/> 
    <RadioButton GroupName="LotOfFour" Tag="1" Click="RadioButton_Click" Checked="RadioButton_Checked" Unchecked="RadioButton_Unchecked"/> 
    <RadioButton GroupName="LotOfFour" Tag="2" Click="RadioButton_Click" Checked="RadioButton_Checked" Unchecked="RadioButton_Unchecked"/> 
    <RadioButton GroupName="LotOfFour" Tag="3" Click="RadioButton_Click" Checked="RadioButton_Checked" Unchecked="RadioButton_Unchecked"/> 
</StackPanel> 
</UserControl> 

code derrière ...

public partial class MainPage : UserControl 
{ 
    private Boolean[] _ischecked; 
    public MainPage() 
    { 
     InitializeComponent(); 
     Loaded += new RoutedEventHandler(MainPage_Loaded); 
    } 

    void MainPage_Loaded(object sender, RoutedEventArgs e) 
    { 
     _ischecked = new Boolean[] { false, false, false, false }; 
    } 

    private void RadioButton_Checked(object sender, RoutedEventArgs e) 
    { 
     MessageBox.Show("Checked"); 
    } 

    private void RadioButton_Unchecked(object sender, RoutedEventArgs e) 
    { 
     MessageBox.Show("Unchecked"); 
    } 

    private void RadioButton_Click(object sender, RoutedEventArgs e) 
    { 
     RadioButton rbSource = sender as RadioButton; 
     if ((rbSource != null) && (rbSource.IsChecked == true)) 
     { 
      try 
      { 
       Int32 index = Int32.Parse(rbSource.Tag.ToString()); 
       Boolean isSourceChecked = _ischecked[index]; 
       // Now reset all to false, source will be set accordingly in ifelse block. 
       _ischecked[0] = false; 
       _ischecked[1] = false; 
       _ischecked[2] = false; 
       _ischecked[3] = false; 
       if (isSourceChecked == true) 
       { 
        _ischecked[index] = false; 
        rbSource.IsChecked = false; 
       } 
       else 
       { 
        _ischecked[index] = true; 
       } 
      } 
      catch (Exception) { } 
     } 
    } 
} 
0

Est-ce comme ça dans les événements enregistrés et non enregistrés du RadioButton

public bool Ischecked { get; set; } 
    private void RadioButton_Checked(object sender, RoutedEventArgs e) 
    { 
     Ischecked = true; 
    } 

    private void RadioButton_Unchecked(object sender, RoutedEventArgs e) 
    { 
     Ischecked = false; 
    } 
+0

Il ne fonctionne toujours pas. – Mitc

Questions connexes