我窗口的XAML:雙向結合不起作用
<ListView Grid.Row="0" Name="files">
<ListView.Resources>
<DataTemplate x:Key="CheckboxTemplate">
<CheckBox IsChecked="{Binding Save, Mode=TwoWay}" />
</DataTemplate>
</ListView.Resources>
<ListView.View>
<GridView AllowsColumnReorder="False">
<GridViewColumn Header=" " Width="30" CellTemplate="{StaticResource CheckboxTemplate}" />
<GridViewColumn Header="Datei" DisplayMemberBinding="{Binding File}"/>
</GridView>
</ListView.View>
</ListView>
我窗口的構造函數:
IEnumerable<SaveItem> sil = sdl.Select(d => new SaveItem() { Save = true, Document = d });
files.ItemsSource = sil;
和數據結構我想顯示:
public class SaveItem : INotifyPropertyChanged
{
private bool save;
public bool Save
{
get { return this.save; }
set
{
if (value != this.save)
{
this.save = value;
NotifyPropertyChanged("Save");
}
}
}
private void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
public StandardDocument Document { get; set; }
public string File { get { return Document.Editor.File; } }
#region INotifyPropertyChanged Member
public event PropertyChangedEventHandler PropertyChanged;
#endregion
}
我打電話給窗戶。窗口出現。我取消選中listview項目的複選框。我點擊一個按鈕。在它的事件處理程序中,我讀出了listview的itemssource,並且...未檢查項的Save-Property(源代碼)仍然是真的!
我的錯誤在哪裏?爲什麼我的資源沒有得到更新,如果我檢查/取消選中複選框?
PS評價 - 您可以使用名爲「Snoop」的程序附加到正在運行的程序並檢查數據綁定錯誤。如果你這樣做 - 你會看到窗口上的數據上下文,所有的子元素可能都是空的。 – tsells 2011-12-29 02:23:34