Arrays wpf绑定多个复选框';已检查到静态列表
这是我发布的一个问题的第二部分的重头戏,理解到在一个条目中放两个问题不是很好,下面是: 我正在以编程方式创建几个复选框,并使用foreach循环将它们添加到名为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
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>();
}
}