LongListSelector绑定到CollectionViewSource显示空列表

本文关键字:列表 显示 CollectionViewSource 绑定 LongListSelector | 更新日期: 2023-09-27 17:50:21

我尝试在我的项目中使用CollectionViewSource,当它不起作用时,我创建了一个新的空项目来简化事情。现在的问题是LLS是空的。我检查了事件处理程序。e. accept的实际计算结果为true。也许我错过了什么。

我所理解的是传递给事件处理程序的每个项目,其中接受属性为真,在列表中显示,我是对的吗?

MainPage.xaml:

<phone:PhoneApplicationPage
x:Class="Filtered_List_Test.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DataContext="{d:DesignData SampleData/MainViewModelSampleData.xaml}"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait"  Orientation="Portrait"
shell:SystemTray.IsVisible="True">
<phone:PhoneApplicationPage.Resources>
    <CollectionViewSource x:Name="FilteredList" Source="{Binding Items}" Filter="FilteredList_Filter" />
</phone:PhoneApplicationPage.Resources>
<!--LayoutRoot is the root grid where all page content is placed-->
<Grid x:Name="LayoutRoot" Background="Transparent">
    <!--Pivot Control-->
    <phone:Pivot Title="MY APPLICATION">
        <!--Pivot item one-->
        <phone:PivotItem Header="first">
            <!--Double line list with text wrapping-->
            <phone:LongListSelector Margin="0,0,-12,0" ItemsSource="{Binding Source={StaticResource FilteredList}}">
                <phone:LongListSelector.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Margin="0,0,0,17">
                            <TextBlock Text="{Binding LineOne}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/>
                            <TextBlock Text="{Binding LineTwo}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
                        </StackPanel>
                    </DataTemplate>
                </phone:LongListSelector.ItemTemplate>
            </phone:LongListSelector>
        </phone:PivotItem>
    </phone:Pivot>
</Grid>
</phone:PhoneApplicationPage>

MainPage.xaml.cs:

namespace Filtered_List_Test
{
public partial class MainPage : PhoneApplicationPage
{
    // Constructor
    public MainPage()
    {
        InitializeComponent();
        // Set the data context of the listbox control to the sample data
        DataContext = App.ViewModel;
        // Sample code to localize the ApplicationBar
        //BuildLocalizedApplicationBar();
    }
    // Load data for the ViewModel Items
    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        if (!App.ViewModel.IsDataLoaded)
        {
            App.ViewModel.LoadData();
        }
    }
    private void FilteredList_Filter(object sender, System.Windows.Data.FilterEventArgs e)
    {
        e.Accepted = true;
    }
}
}

基于标准PivotApp模板。

UPD:进一步逐行调试表明,由于某种原因,CollectionViewSourceView属性没有传播。Source显示所有项目,但View保持null。有什么建议吗?

LongListSelector绑定到CollectionViewSource显示空列表

经过进一步研究,我发现LongListSelector不能与CollectionViewSource结合。您必须使用ListBox才能绑定到CollectionViewSource