加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

xaml – CollectionViewSource“值不在预期范围内.”

发布时间:2020-12-14 02:01:28 所属栏目:Windows 来源:网络整理
导读:为什么此代码会在 Windows 8 XAML应用程序中产生错误? Value does not fall within the expected range. XAML: SemanticZoom SemanticZoom.ZoomedInView ListView Style="{StaticResource HorizontalListViewStyle}" SelectionMode="None" ScrollViewer.Is
为什么此代码会在 Windows 8 XAML应用程序中产生错误?

Value does not fall within the expected range.

XAML:

<SemanticZoom>
        <SemanticZoom.ZoomedInView>
            <ListView
                Style="{StaticResource HorizontalListViewStyle}"
                SelectionMode="None"
                ScrollViewer.IsHorizontalScrollChainingEnabled="False"
                ItemsSource="{Binding BoardItems}" 
                ItemContainerStyle="{StaticResource ZoomedOutListViewItemContainerStyle}"
...

MVVM代码:

ObservableCollection<WritingBoardModel> boards = new ObservableCollection<WritingBoardModel>();

... // Add item models to boards.

CollectionViewSource v = new CollectionViewSource()
{
    Source = boards,};

this.ViewModel.Add(BoardItemsViewModelKey,v);

如果我跳过CollectionViewSource并直接将板实例添加到我的视图模型中,那么一切正常.

我想我需要使用CollectionViewSource才能使一些语义缩放选择行为起作用.

卢克

解决方法

因此,CollectionViewSources很奇怪,你必须绑定它们的方式也很奇怪.举个例子,为了“按书”(样本项目的方式),我发现它实际上必须是一个StaticResource:

<Page.Resource>
    <CollectionViewSource Source="{Binding Whatev}"
                          x:Key="WhatevSource"/>
</Page.Resource>

<GridView ItemsSource="{Binding Source={StaticResource WhatevSource}}"/>

请注意,我们没有直接将源设置为CollectionViewSource,但是我们设置了一个’无路径’绑定,基本上使用CollectionViewSource作为DataContext(只是一种思考方式,实际上技术上并不正确).

这是我能够让它工作的唯一方法,虽然我相信你可以在技术上将代码隐藏设置为将ItemsSource直接设置到CollectionViewSource的View或类似的东西.

希望这有助于编码!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读