locked
RadioButton为什么没有互斥? RRS feed

  • 问题

  • 大家好:)

    当我直接在界面中拖入两个或者多个RadioButton时,然后Run我的程序,就发生互斥。

    但是我做了一个实验,把两个RadioButton同时IsChecked=True,结果并没有互斥?运行时候也是两个RadioButton都是True的状态?



    当然,我使用代码把两个RadioButton都设置为True,却惊讶地发现只有最后一个RadioButton2为True。

     private void PhoneApplicationPage_Loaded(object senderRoutedEventArgs e)
            {
                radioButton1.IsChecked = true;
                radioButton2.IsChecked = true;
            }
    我的问题是:当同时把多个RadioButton设置成True的时候,是不是应该以最后一个为准?
    为什么设计器中不能智能做到这一点呢?谢谢了

    如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者讨论(Talk)
    If you do not have QQ, please open the page and download it and click the image to talk or leave message for me.
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    2011年9月30日 5:52

答案

  • 你好

    或者你可以嘗試 設定 GropName properties


    E.G.

    <StackPanel>
        <RadioButton GroupName="colorgrp">Red</RadioButton>
        <RadioButton GroupName="colorgrp">Blue</RadioButton>
        <RadioButton GroupName="numgrp">1</RadioButton>
        <RadioButton GroupName="numgrp">2</RadioButton>
    </StackPanel>
    
    


    http://msdn.microsoft.com/zh-cn/library/ms745072(v=vs.85).aspx

    Please correct me if my concept is wrong


    Chi
    2011年9月30日 7:35
  • 我也认为可采用分组互斥的方式更好。

    <TextBlock Text="First Group:"  Margin="5" />
                    <RadioButton x:Name="TopButton" Margin="5" Checked="HandleCheck"
           GroupName="First Group" Content="First Choice"  IsChecked="False" />
                    <RadioButton x:Name="MiddleButton" Margin="5" Checked="HandleCheck"
           GroupName="First Group" Content="Second Choice"  IsChecked="True" />
                    <TextBlock Text="Ungrouped:" Margin="5" />
                    <RadioButton x:Name="LowerButton" Margin="5" Checked="HandleCheck"
          Content="Third Choice" />
                    <TextBlock x:Name="choiceTextBlock" Margin="5" />

     

    如果在同一组中有多个RadioButton在XAML中设置为True,则加载时会出现错误。

    在代码中则以最后执行的代码为最终互斥选择的结果。

     private void HandleCheck(object sender, RoutedEventArgs e)
            {
                RadioButton rb = sender as RadioButton;
                choiceTextBlock.Text = "You chose: " + rb.GroupName + ": " + rb.Name;
            }

     


    Cedar
    2011年10月1日 2:32
    版主

全部回复

  • 你好

    或者你可以嘗試 設定 GropName properties


    E.G.

    <StackPanel>
        <RadioButton GroupName="colorgrp">Red</RadioButton>
        <RadioButton GroupName="colorgrp">Blue</RadioButton>
        <RadioButton GroupName="numgrp">1</RadioButton>
        <RadioButton GroupName="numgrp">2</RadioButton>
    </StackPanel>
    
    


    http://msdn.microsoft.com/zh-cn/library/ms745072(v=vs.85).aspx

    Please correct me if my concept is wrong


    Chi
    2011年9月30日 7:35
  • 你好

    或者你可以嘗試 設定 GropName properties

    Please correct me if my concept is wrong


    Chi


    谢谢!可惜还是不行。

    PS:可以告诉我你QQ吗?有QQ吗?或者你发私人邮件告诉我也可以,我想加你好友……:)


    如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者讨论(Talk)
    If you do not have QQ, please open the page and download it and click the image to talk or leave message for me.
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    2011年9月30日 7:45
  • 你好

    不好意思..解決不到這個問題

    Email 了你了..很高興認識你

    Nice to meet you


    Chi
    2011年9月30日 7:57
  • 我也认为可采用分组互斥的方式更好。

    <TextBlock Text="First Group:"  Margin="5" />
                    <RadioButton x:Name="TopButton" Margin="5" Checked="HandleCheck"
           GroupName="First Group" Content="First Choice"  IsChecked="False" />
                    <RadioButton x:Name="MiddleButton" Margin="5" Checked="HandleCheck"
           GroupName="First Group" Content="Second Choice"  IsChecked="True" />
                    <TextBlock Text="Ungrouped:" Margin="5" />
                    <RadioButton x:Name="LowerButton" Margin="5" Checked="HandleCheck"
          Content="Third Choice" />
                    <TextBlock x:Name="choiceTextBlock" Margin="5" />

     

    如果在同一组中有多个RadioButton在XAML中设置为True,则加载时会出现错误。

    在代码中则以最后执行的代码为最终互斥选择的结果。

     private void HandleCheck(object sender, RoutedEventArgs e)
            {
                RadioButton rb = sender as RadioButton;
                choiceTextBlock.Text = "You chose: " + rb.GroupName + ": " + rb.Name;
            }

     


    Cedar
    2011年10月1日 2:32
    版主
  • 如果是这样的话,看来Groupname应该可以……

    不过我想询问一下——你们开发Mango的版本是?我是RC版之前的Beta,你们试过吗?有此问题吗?


    如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者讨论(Talk)
    If you do not have QQ, please open the page and download it and click the image to talk or leave message for me.
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    2011年10月1日 2:37
  • 我用的 Windows Phone SDK 7.1 正式版。

    The Windows Phone SDK 7.1, available in English, Japanese, Chinese (Traditional), French, German, Italian, Korean, Russian, and Spanish, provides the tools necessary to target Windows Phone users using either Windows Phone OS 7.1 or 7.0 and includes productivity enhancements such as an app profiler and an improved emulator.

    下载地址:http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=27570

    SDK每出一个新版本后我就更新了开发环境,关于RadioButton不如您考虑的这么深,所以也在之前版本中测试过。


    Cedar
    2011年10月1日 3:00
    版主
  • 谢了!@

    看来好像您就是从事这方面工作的啊,好精通哦……


    如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者讨论(Talk)
    If you do not have QQ, please open the page and download it and click the image to talk or leave message for me.
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    2011年10月1日 3:02
  • 有时间偷着学而已。
    Cedar
    2011年10月1日 3:37
    版主