2011-12-06 6 views
0

1つのグループに4つのラジオボタンがあります。 ラジオボタンをクリックすると、状態はIsChecked = trueに変更されます。 ラジオボタンの状態をIsChecked = falseに変更したいのですが、チェックしたラジオボタンをクリックします。 これはXAMLで可能ですか?2回目のクリック時にradioButtonの状態をIsChecked = falseに設定することはできますか?

+0

多分何か偽(にisChecked ==真)にisChecked =があればのような、そうでない=真にisChecked。 – Gero

+0

ラジオボタンはデータバインドされていますか? –

+0

いいえ、radioButtonsはデータにバインドされていません。 – Mitc

答えて

0

のチェックや未確認のイベントでこのようにそれを実行してください。ラジオボタンのいずれかをクリックするたびに、ステータスを最新の状態に更新する必要があります。以下はあなたが試すことができるコードです。

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> 

コード...

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

は、あなたがグループの4つのラジオボタンの確認状況を追跡する必要があるラジオボタン

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

まだ動作していません。 – Mitc

関連する問題