Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
复选框式单选按钮wpf c#_C#_Wpf_Xaml_Wpf Controls_Wpftoolkit - Fatal编程技术网

复选框式单选按钮wpf c#

复选框式单选按钮wpf c#,c#,wpf,xaml,wpf-controls,wpftoolkit,C#,Wpf,Xaml,Wpf Controls,Wpftoolkit,我已经研究了这个问题,但在设计视图和代码隐藏中解决了这个问题。但我的问题并没有什么不同:我试图这样做,因为我的复选框是根据数据库数据动态创建的,所以我的复选框数量不稳定。我只想选中一组复选框中的一个复选框。当我单击一个复选框时,我希望其他复选框的ischecked属性变为false。这与radiobuttons中的属性相同。我从xaml侧的stackpanel中取出复选框: <StackPanel Margin="4" Orientation="Vertical" Grid.Row="1

我已经研究了这个问题,但在设计视图和代码隐藏中解决了这个问题。但我的问题并没有什么不同:我试图这样做,因为我的复选框是根据数据库数据动态创建的,所以我的复选框数量不稳定。我只想选中一组复选框中的一个复选框。当我单击一个复选框时,我希望其他复选框的ischecked属性变为false。这与radiobuttons中的属性相同。我从xaml侧的stackpanel中取出复选框:

<StackPanel Margin="4" Orientation="Vertical"  Grid.Row="1" Grid.Column="1" Name="companiesContainer">
            </StackPanel>
如何在xaml.cs中的复选框中提供此属性?
提前感谢..

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

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

我认为这应该(从我的头顶上)起作用

以下是我刚刚编写的一些代码,应该会有所帮助:

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

代码隐藏部分:

    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;
            }
        }
    }
public主窗口()
{
初始化组件();
this.Loaded+=主窗口\u Loaded;
}
已加载私有void主窗口(对象发送器、路由目标)
{
创建复选框();
}
私有void createCheckBox()
{

对于(int i=0;我知道你为什么想让复选框像单选按钮一样,而不是使用单选按钮?我只是想知道怎么做。我想试试这个。对不起……现在我意识到我有一个选择,这些复选框都不能被选中。这行得通吗?对不起,我不能在这么短的时间内提供代码。你为什么不能这样做,解释一下你不明白什么?这会使它更简单吗?我已经创建了一个。c_Checked函数是一个事件处理程序。
    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;
            }
        }
    }