如何将我的ObservableCollection两种方式绑定到ListView扩展WinRT Xaml工具包

时间:2014-08-22 06:58:19

标签: c# windows-runtime winrt-xaml windows-8.1 winrt-xaml-toolkit

我有一个带有ListView的Windows 8.1应用程序,我正在使用WinRt Xaml Toolkit中的ListViewExtensions(从Nuget获取最新版本)来绑定BindableSelection

这是我的XAML

    <ListView
        ItemsSource="{Binding AllItems}"
        SelectionMode="Multiple"
        ext:ListViewExtensions.BindableSelection="{Binding SelectedItems, Mode=TwoWay}">
        <ListView.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding}" />
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

在我的ViewModel中,我有以下ObservableCollection,我将xaml绑定到

  private ObservableCollection<string> _SelectedItems;
    public ObservableCollection<string> SelectedItems
    {
        get { return _SelectedItems; }
        set
        {
            if (value != _SelectedItems)
            {
                _SelectedItems = value;
                NotifyPropertyChanged("SelectedItems");
            }
        }
    }

我在我的ObservableCollection的get和set上放了断点。我的View加载后会立即调用get,但即使我选择了ListView的多个项目,也不会调用该集。

我做错了什么。

如果有人能指出我正确的方向,我会很高兴。 在此先感谢。

1 个答案:

答案 0 :(得分:0)

意识到我的错误。我从未为ObservableCollections SelectedItems创建对象。

应该在某个时刻为ObservableCollection创建对象,否则XAML将绑定到一个显然无法更新的空对象引用。

以下是实例化ObservableCollection的方法。

SelectedItems = new ObservableCollection<MyItems>();

但是我仍然无法触及ObservableCollection的set函数的断点。我相信这是Observable的默认行为。如果有人可以对此发表评论,我会很高兴。

然而,这个特定问题的问题已经解决了。 感谢