C#WPF Gui复选框名称作为数组

时间:2018-10-05 09:03:01

标签: c# arrays wpf checkbox

我用WPF创建了一些CheckBoxex。对于我的程序而言,重要的是我可以使用数组访问我的复选框。

例如

iGPIO [1] .IsChecked

 <ScrollViewer>
            <StackPanel Margin="0,0,10,0">
                <CheckBox Name="iGPIO[0]" Content="GPIO 1"></CheckBox>
                <CheckBox Name="iGPIO[1]" Content="GPIO 2"/>
                <CheckBox Content="GPIO 3"/>
                <CheckBox Content="GPIO 4"/>
                <CheckBox Content="GPIO 5"/>
                <CheckBox Content="GPIO 6"/>
                <CheckBox Content="GPIO 7"/>
                <CheckBox Content="GPIO 8"/>
                <CheckBox Content="GPIO 9"/>
                <CheckBox Content="GPIO 10"/>
                <CheckBox Content="GPIO 11"/>
                <CheckBox Content="GPIO 12"/>
                <CheckBox Content="GPIO 13"/>
                <CheckBox Content="GPIO 14"/>
                <CheckBox Content="GPIO 15"/>
                <CheckBox Content="GPIO 16"/>
                <CheckBox Content="GPIO 17"/>
                <CheckBox Content="GPIO 18"/>
                <CheckBox Content="GPIO 19"/>
                <CheckBox Content="GPIO 20"/>
                <CheckBox Content="GPIO 21"/>
                <CheckBox Content="GPIO 22"/>
                <CheckBox Content="GPIO 23"/>
                <CheckBox Content="GPIO 24"/>
                <CheckBox Content="GPIO 25"/>
                <CheckBox Content="GPIO 26"/>
                <CheckBox Content="GPIO 27"/>
            </StackPanel>

2 个答案:

答案 0 :(得分:0)

我建议使用ListBox将复选框和DataTemplate分组

<StackPanel>
    <ListBox Name="listBox" ItemsSource="{Binding TheList}">
        <ListBox.ItemTemplate>
            <DataTemplate>
                 <CheckBox Name="CheckBoxZone" Content="{Binding TheText}" 
                     Tag="{Binding TheValue}" Checked="CheckBoxZone_Checked"/>
            </DataTemplate> 
        </ListBox.ItemTemplate>
    </ListBox>
</StackPanel>

答案 1 :(得分:0)

这是一种实现方法。

首先,给您的StackPanel一个Name属性,例如“ myStackPanel”。

然后在顶部添加此Using,用于查询对象:

using System.Linq;

并执行以下操作:

// Get all available checkboxes in the StackPanel's children.
var checkBoxes = myStackPanel.Children.OfType<CheckBox>();

for (int i = 0; i < checkBoxes.Count; i++)
{
    MessageBox.Show(checkBoxes[i].Content + ": " checkBoxes[i].IsChecked.ToString());
    // GPIO 1: true
    // GPIO 2: false
    // etc...
}

// Get first checkbox state
MessageBox.Show(checkBoxes[0].IsChecked.ToString());