所以,我希望標題不言自明,但一如既往,會更好地描述它。 我試圖把很多的複選框放入一個列表中,然後我可以使用它們的索引取消選中他們,當我有另一個檢查。在C#中創建WPF控件的列表/數組?
我的XAML的一個簡短的一部分,因爲它有點長,反覆多爲
<Expander Header="Tercer Ciclo" FontWeight="Bold" Width="auto" Height="auto">
<StackPanel>
<Expander Header="9° Grado" Margin="20,0,0,0">
<StackPanel>
<CheckBox x:Name="NovA" Margin="40,0,0,0" Content="Noveno A" />
<CheckBox x:Name="NovB" Margin="40,0,0,0" Content="Noveno B" />
<CheckBox x:Name="NovC" Margin="40,0,0,0" Content="Noveno C"/>
<CheckBox x:Name="NovD" Margin="40,0,0,0" Content="Noveno D"/>
<CheckBox x:Name="NovE" Margin="40,0,0,0" Content="Noveno E"/>
</StackPanel>
</Expander>
這種結構只是重演另有7倍左右。事情是,當我選擇一個時,我想讓其他人取消選中。它並不會真正影響程序的正確功能,它只是更美觀並且定位用戶。
在你開始大聲說我應該使用這個或這個。我曾嘗試過:
- 使用單選按鈕,但由於它是另一個列表中的列表,所以效果不佳。
- 我搜索瞭如何創建一個列表來插入窗口的控件,並找到了一種答案,但它是爲WinForms的意思,我不知道如何在WPF做它,因爲它有不同的方法。
- 試圖手動插入CheckBox的名稱,一個接一個......沒辦法,我正在完成;即使再
foreach
語法的控件...
我把這個作爲後面的代碼的參考: [Assign checkboxes to an checkbox-array using a for loop in C#]
我有這個已經,這是我看到的一個代碼幾乎正是我想要的,但同樣,意味着的WinForms所以foreach
語法那種不適合WPF
private void Window_Loaded(object sender, RoutedEventArgs e)
{
List<CheckBox> listCheck = new List<CheckBox>();
foreach (Control checkbox in //Invoke the window's Controls, don't know the syntaxis)
{
//Add the Checkbox's x:Name on the list...
}
}
很抱歉,如果我發這個帖子這麼久了,但我一直CR我的頭在這附近數週了,並沒有發現我失蹤的東西的一些線索... 我很新的WPF和C#一般,所以是的,有點失落。
使用MVVM與ItemsControl來做這種事情會更加快樂。 –
如果您使用StackPanel的屬性名稱,則可以使用其子屬性來獲取所有控件。 – ganchito55
互斥複選框:https://social.msdn.microsoft.com/Forums/vstudio/en-US/59a6e152-5652-4701-9b49-fa310d70c2bf/mutually-exclusive-checkboxes-in-wpf?forum=wpf – Gus