Xaml 将复选框绑定到LongListSelector

Xaml 将复选框绑定到LongListSelector,xaml,mvvm,windows-phone-8,2-way-object-databinding,Xaml,Mvvm,Windows Phone 8,2 Way Object Databinding,我正在尝试在长列表选择器中绑定一些复选框。它们会绑定,并且在渲染视图时会选中/取消选中正确的复选框,但我无法通过选中/取消选中复选框来修改基础对象 <Grid Grid.Row="3"> <phone:LongListSelector ItemsSource="{Binding PlaceOfInterestCategories}"> <phone:LongListSelector.ItemTemplate> <DataTempl

我正在尝试在长列表选择器中绑定一些复选框。它们会绑定,并且在渲染视图时会选中/取消选中正确的复选框,但我无法通过选中/取消选中复选框来修改基础对象

<Grid Grid.Row="3">
<phone:LongListSelector ItemsSource="{Binding PlaceOfInterestCategories}">
    <phone:LongListSelector.ItemTemplate>
        <DataTemplate>
            <CheckBox IsChecked="{Binding IsSelected, Mode=TwoWay}" Content="{Binding Name}"/>
        </DataTemplate>
    </phone:LongListSelector.ItemTemplate>
</phone:LongListSelector>    
我已尝试订阅CollectionChanged事件,但未被触发

我总是可以在代码隐藏中处理选中和未选中,但我宁愿不这样做,而是处理viewmodel中的所有内容


对于如何使绑定正常工作的任何输入,我将不胜感激。

让PlaceOfInterestCategory实现INotifyPropertyChange并在属性设置器中调用
OnPropertyChanged()
。当您绑定到视图中可观察集合的项时,这些项是PlaceOfInterestCategory,它们应该实现
INPC
。您是否尝试过在setter中设置断点,以查看在选中复选框时是否实际更新了属性?它们是否未被设置,或者更改是否未反映在您的UI中?

您可以发布您的PlaceOfInterestCategory类吗?不需要在标题中添加标签,这是一个标签系统。请阅读讨论内容。同样地,“谢谢”已经“覆盖”了,因为你的角色卡在右下角,所以也不需要。非常感谢!我的印象是ObservableCollection为我处理了INPC,但这只适用于简单类型,事后看来,这是非常有意义的。
private ObservableCollection<PlaceOfInterestCategory> _placeOfInterestCategories;

public ObservableCollection<PlaceOfInterestCategory> PlaceOfInterestCategories
{
    get { return _placeOfInterestCategories; }
    set
    {
        if (_placeOfInterestCategories != value)
        {
            _placeOfInterestCategories = value;

            OnPropertyChanged();
        }
    }
}

public event PropertyChangedEventHandler PropertyChanged;

[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
    var handler = PropertyChanged;
    if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
[DataContract]
public class PlaceOfInterestCategory
{
    [DataMember]
    public int Id { get; set; }

    [DataMember]
    public string Name { get; set; }

    [DataMember]
    public bool IsSelected { get; set; }
}