在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