在WPF中,我有一个bool集合?值,我想以编程方式将每个这些绑定到单独的复选框。我希望绑定是TwoWay,以便更改代码中集合中单个项目的值更新复选框,反之亦然。将控件绑定到WPF中的一个集合/数组中的单个值
我花了很多年试图找出如何做到这一点,我完全卡住了。使用下面的代码,当窗口加载时,复选框只会获得正确的值,就是这样。更改复选框甚至不更新集合中的值。 (更新:这似乎是.NET4中的一个错误,因为集合在相同的.NET3.5项目中得到更新。更新:Microsoft已经确认该错误并且它将在.NET4版本中得到修复。)
非常感谢您的帮助!
C#:
namespace MyNamespace
{
public partial class MyWindow : Window, INotifyPropertyChanged
{
public MyWindow()
{
InitializeComponent();
DataContext = this;
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
public List<bool?> myCollection = new List<bool?>
{ true, false, true, false, true, false };
public List<bool?> MyCollection
{
get { return myCollection; }
set { myCollection = value; }
}
}
}
XAML:
<CheckBox IsChecked="{Binding Path=MyCollection[0], Mode=TwoWay}">
我还在努力通过前3个答案,但我很困惑,为什么我的代码似乎适用于前两个受访者(至少在方向CheckBox - > MyCollection)。对我而言,这根本就没有发生。如果相关,我使用VS2010 Beta 2和.NET4。 – 2010-01-17 23:14:11
嗯,我肯定没有想到这将是相关的:我将所有东西都复制到一个.NET 3.5项目,并嘿presto - 复选框更新MyCollection中的值。我想知道为什么它不能在.NET 4中工作? – 2010-01-17 23:41:29
嗯,如果你有这样的代码在.NET 3.5中工作,但是相同的代码在.NET 4中不起作用,那就暗示了.NET 4中的一个错误。可能值得发布到Connect。 – itowlson 2010-01-17 23:59:18