0

我想在一些书中进行搜索,然后每本书的结果出现在单独的枢轴控件项中。每一个都由该 PivotItem 内的一个单独的 LongListSelector 控件表示。现在我想知道我应该ItemsSource为 LongListSelector 还是为其作为 Pivot 的父级指定?

所有书籍都有一本字典:

private Dictionary<string, List<Model>> ItemResources = new Dictionary<string, List<Model>>();

List<Model>每本书的一个,它将被保存为ItemResources上面的一个值。

这就是我所做的:

        foreach (var translation in ItemResources)
        {
            PivotItem pivotItem = new PivotItem
            {
                Header = translation.Key
            };

            LongListSelector lls = new LongListSelector
            {
                HideEmptyGroups = false,
                IsGroupingEnabled = false
            };

            lls.ItemTemplate = Resources["template"] as DataTemplate;
            lls.ItemsSource = translation.Value;

            pivotItem.Content = lls;

            ResultPivot.Items.Add(pivotItem);
        }

并且template是一个可重用的DataTemplate,我为每个pivotItem内的每个longlistselector重新生成它ResultPivot

<phone:PhoneApplicationPage.Resources>
    <DataTemplate x:Key="template">
        <StackPanel Margin="0,0,0,0" Orientation="Vertical">
            <StackPanel Orientation="Horizontal" HorizontalAlignment="Left" Height="Auto" VerticalAlignment="Top" Width="455" Margin="3,20,3,0">
                <TextBlock Text="{Binding Name}" TextWrapping="Wrap" Style="{StaticResource PhoneTextLargeStyle}" FontSize="{StaticResource PhoneFontSizeNormal}"/>
                <TextBlock Text="{Binding Number}" TextWrapping="Wrap" Style="{StaticResource PhoneTextLargeStyle}" FontSize="{StaticResource PhoneFontSizeNormal}"/>
            </StackPanel>
            <StackPanel Height="Auto" VerticalAlignment="Top" HorizontalAlignment="Left" Width="455" Margin="3,0,3,20">
                <TextBlock Text="{Binding Text}" TextWrapping="Wrap" Style="{StaticResource PhoneTextLargeStyle}" FontSize="{StaticResource PhoneFontSizeNormal}"/>
            </StackPanel>
        </StackPanel>
    </DataTemplate>
</phone:PhoneApplicationPage.Resources>

问题是运行后屏幕上什么也没有出现。我在调试中看到值在那里,但数据绑定似乎有问题。我该如何解决?谢谢

(这是一个 Windows Phone 8 应用程序,但因为 WPF 及其广泛社区的概念是相同的,所以我也添加了它)

4

1 回答 1

0

UI 目前无法知道源何时更改。您需要使用ObservableCollection或实现INotifyPropertyChanged接口以在源更改时正确通知 UI。

于 2013-07-03T17:40:24.013 回答