Arrays wpf绑定多个复选框';已检查到静态列表

Arrays wpf绑定多个复选框';已检查到静态列表,arrays,wpf,checkbox,binding,static,Arrays,Wpf,Checkbox,Binding,Static,这是我发布的一个问题的第二部分的重头戏,理解到在一个条目中放两个问题不是很好,下面是: 我正在以编程方式创建几个复选框,并使用foreach循环将它们添加到名为myStackPanel的StackPanel。我可以将其更改为任何其他类型的构造(例如,数组): 此外,还有一个非静态类myClass,具有静态属性myStaticList: public class myClass { public static ObservableCollection<bool> myStati

这是我发布的一个问题的第二部分的重头戏,理解到在一个条目中放两个问题不是很好,下面是:

我正在以编程方式创建几个复选框,并使用foreach循环将它们添加到名为
myStackPanel
的StackPanel。我可以将其更改为任何其他类型的构造(例如,数组):

此外,还有一个非静态类
myClass
,具有静态属性
myStaticList

public class myClass
{
    public static ObservableCollection<bool> myStaticList { get; set; }
}
公共类myClass
{
公共静态ObservableCollection myStaticList{get;set;}
}
我想将动态创建的复选框的isChecked绑定到
myStaticList
。我不知道怎么做


救命啊!TIA

如果您想绑定
IsChecked
属性,那么以下是在代码隐藏中执行此操作的方法:

        for (int i = 0; i < myClass.myStaticList.Count; i++)
        {
            CheckBox newCheckBox = new CheckBox();

            Binding binding = new Binding();
            binding.Path = new PropertyPath(string.Format("[{0}]", i));
            binding.Source = myClass.myStaticList;
            BindingOperations.SetBinding(newCheckBox, CheckBox.IsCheckedProperty, binding);

            myStackPanel.Children.Add(newCheckBox);
        }
请注意,
myStaticList
必须在
myClass
的静态构造函数中实例化:

public class myClass
{
    public static ObservableCollection<bool> myStaticList { get; set; }

    static myClass()
    {
        myStaticList = new ObservableCollection<bool>();
    }
}
公共类myClass
{
公共静态ObservableCollection myStaticList{get;set;}
静态myClass()
{
myStaticList=新的ObservableCollection();
}
}

Hmmm。。。似乎不起作用。此外,这需要以正确的大小初始化myStaticList,但在我的应用程序中,这可能会动态更改。是否有一种方法可以完全以编程方式进行绑定,如您上面所建议的那样,而无需循环?我的意思是-设置一组复选框作为一个整体链接到一个可观察集合?谢谢,@Bahman_AriesI抱歉,我不太明白你的意思,你能详细解释一下吗?嗨@Bahman_Aries-请看我的新问题和具体问题:
    <ItemsControl x:Name="myStackPanel" 
                  ItemsSource="{Binding Source={x:Static local:myClass.myStaticList}}">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel Orientation="Vertical"/>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <CheckBox IsChecked="{Binding Path=., Mode=OneWay}"/>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
foreach(something)
{
    myClass.myStaticList.Add(true or false);
}
public class myClass
{
    public static ObservableCollection<bool> myStaticList { get; set; }

    static myClass()
    {
        myStaticList = new ObservableCollection<bool>();
    }
}