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:进一步逐行调试表明,由于某种原因,CollectionViewSource
的View
属性没有传播。Source
显示所有项目,但View
保持null
。有什么建议吗?
经过进一步研究,我发现LongListSelector
不能与CollectionViewSource
结合。您必须使用ListBox
才能绑定到CollectionViewSource
。