2013-06-03 84 views
1

我試圖瞭解RadioButton中的IsChecked屬性如何工作,因爲我構建的自定義控件具有類似的行爲。具有類似RadioButton IsChecked功能的自定義控件

我需要的信息是RadioButton自動將IsChecked變爲false當其他RadioButton被選中。

見例如:

<StackPanel> 
    <RadioButton Content="Info 1" IsChecked="True" /> 
    <RadioButton Content="Info 2" /> 
</StackPanel> 

如果我在RadioButton點擊與"Info 2"其它無線電自動變爲選中。

但如果收音機處於diferent StackPanel這樣的:

<StackPanel> 
    <StackPanel> 
     <RadioButton Content="Info 1.1" IsChecked="True" /> 
     <RadioButton Content="Info 1.2" /> 
    </StackPanel> 
    <StackPanel> 
     <RadioButton Content="Info 2.1" IsChecked="True" /> 
     <RadioButton Content="Info 2.2" /> 
    </StackPanel> 
</StackPanel> 

Info 1.1點擊了Info 2.1保持檢查。

我的自定義控件需要這種行爲。最乾淨的方法是如何做到的?

+0

也許你可以使用類似這樣的解決方案:http://www.dragonshed.org/blog/2009/03/08/radiobuttons-in-a-datatemplate-in-silverlight /編輯:另外,你最後一個示例代碼似乎是矛盾的。這聽起來像你想要所有4個RadioButton被鏈接,但你默認爲其中兩個設置了「IsChecked = true」。 –

回答

0

RadioButton是一個控件,通常用作一組RadioButton控件中的項目。 RadioButton控件從繼承自ButtonBase的ToggleButton類繼承。因爲RadioButton控件繼承自ToggleButton,所以它們使用戶能夠更改選擇。 當RadioButton元素分組時,按鈕是互斥的。用戶一次只能在RadioButton組中選擇一個項目。 在您的示例單選按鈕具有內容信息1.1和信息1.2共享相同的父控制,因此 它們被分組,這意味着一次只檢查1個單選按鈕,而具有內容信息1.1和信息2.1的單選按鈕不共享相同的父控制,這意味着他們沒有分組 因此,當Info 1.1被選中時,它不會對Info2.1產生任何影響。

+0

確定收音機組是父控制的方面。但是我不能從'ToggleButton'繼承,因爲在我的用戶控件中有許多行爲是我不想要的。 我如何從'Parent'屬性獲得所有其他兄弟姐妹? –

相關問題