我是C++開發人員,最近轉移到C#。我在我的wpf應用程序中使用MVVM模式。我正在研究動態生成單選按鈕。那麼需求很簡單,我需要生成24個Radibuttons,這樣一次只能檢查一個單選按鈕。這裏是代碼:未能生成具有不同「內容」的動態集合的RadioButton
XAML:
<Grid Grid.Row="1">
<GroupBox Header="Daughter Cards" >
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="220" />
</Grid.ColumnDefinitions>
<Grid Grid.Column="0">
<RadioButton Content="{Binding SlotButtons}" Name="SLotButtons" />
</Grid>
</Grid>
</GroupBox>
</Grid>
在Grid.Column="0"
我要生成24個單選按鈕正如我上面所討論。
視圖模型:
// Description of SlotButtons
private string _SlotButtons;
public string SlotButtons
{
get
{
return _SlotButtons;
}
set
{
_SlotButtons = value;
OnPropertyChanged("SlotButtons");
}
}
//For RadioButton Click
private ICommand mSlotCommand;
public ICommand SlotCommand
{
get
{
if (mSlotCommand == null)
mSlotCommand = new DelegateCommand(new Action(mSlotCommandExecuted), new Func<bool>(mSlotCommandCanExecute));
return mSlotCommand;
}
set
{
mSlotCommand = value;
}
}
public bool mSlotCommandCanExecute()
{
return true;
}
public void mSlotCommandExecuted()
{
// Logic to implement on a specific radiobutton click using Index
}
我曾在我的C++應用程序做到了這一點,如下所示:
for(slot = 0; slot < 24; slot++)
{
m_slotButton[slot] = new ToggleButton(String(int(slot)) + String(": None"));
m_slotButton[slot]->addButtonListener(this); // make this panel grab the button press
addAndMakeVisible(m_slotButton[slot]);
}
現在這就是我想要實現:
- 生成24 RadioButtons,內容從
Content = 0: None
到23: None
。 - 應該以這樣一種方式生成輻射單元,即將行分成3列,並在每列中垂直添加8個單選按鈕。
- 在任何時候,只有一個單選按鈕必須被選中,而其他選項不能被選中。只有一個點擊命令可以在各個索引的幫助下處理所有按鈕。
請幫助:)
如果您想使用MVVM,則不要手動創建RadioButton。您使用帶有包含RadioButton的ItemTemplate的ItemsControl,並將Items列表綁定到ItemsSource屬性 – Niki
並獲取8 * 3網格佈局,您可以在ItemControl的ItemsPanel模板中使用UniformGrid – Niki
@nikie:是I已經實施過一次。但是我在那裏發現了一個問題:當我點擊它們時,所有的單選按鈕都會被檢查,即一次必須檢查一個單選按鈕:) – StonedJesus