像radiobutton这样的复选框wpf c#

我已经调查过这个问题,但这在设计视图和代码隐藏中得到了解决。 但我的问题没有什么区别:我尝试这样做只是代码隐藏,因为我的复选框是根据数据库数据动态创建的。换句话说,我的复选框的数量不稳定。 我想只检查一组复选框中的一个复选框。 当我点击一个复选框时,我希望其他复选框的缺失属性变为false.this是radiobuttons中的相同属性。 我从xaml端的stackpanel中取出复选框:

  

我的xaml.cs:

 using (var c = new RSPDbContext()) { var q = (from v in c.Companies select v).ToList(); foreach (var na in q) { CheckBox ch = new CheckBox(); ch.Content = na.Name; ch.Tag = na; companiesContainer.Children.Add(ch); } } foreach (object i in companiesContainer.Children) { CheckBox chk = (CheckBox)i; chk.SetBinding(ToggleButton.IsCheckedProperty, "DataItem.IsChecked"); } 

我如何在xaml.cs的复选框中提供此属性? 提前致谢..

为checked事件添加事件处理程序。 创建复选框时,将此(相同)事件处理程序添加到每个复选框。

在事件处理程序中,运行您添加的每个复选框,对于每个复选框,取消选中它,除非它与发件人的复选框相同。

我认为应该做的伎俩(在我的头顶)。

以下是我刚敲过的一些应该有用的代码:

XAML部分只是一个名为的堆栈面板:Name =“checkboxcontainer”

Codebehind部分:

  public MainWindow() { InitializeComponent(); this.Loaded += MainWindow_Loaded; } private void MainWindow_Loaded(object sender, RoutedEventArgs e) { CreateCheckboxes(); } private void CreateCheckboxes() { for (int i = 0; i <= 5; i++) { CheckBox c = new CheckBox(); c.Name = "Check" + i.ToString(); c.Checked += c_Checked; //This is adding the event handler to the checkbox checkboxcontainer.Children.Add(c); } } // This is the event handler for the checkbox private void c_Checked(object sender, RoutedEventArgs e) { foreach (var control in checkboxcontainer.Children) { if (control is CheckBox && control != sender) { CheckBox cb = (CheckBox)control; cb.IsChecked = false; } } }