1

我有一个带有 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 上设置了断点。一旦我的视图加载,get 将被调用,但即使我选择了我的 ListView 的多个项目,该集合也不会被调用。

难道我做错了什么。

如果有人能指出我正确的方向,我会很高兴。提前致谢。

4

1 回答 1

0

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

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

下面是实例化 ObservableCollection 的方法。

SelectedItems = new ObservableCollection<MyItems>();

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

然而,这个特定问题的问题得到了解决。谢谢

于 2014-08-22T08:04:17.267 回答