Xaml win8问题:ListView在设计时工作,而不是在运行时

时间:2013-01-07 01:20:54

标签: c# xaml winrt-xaml

我在Xaml / win8中使用新创建的空白页面时遇到问题。这是我的代码:

<common:LayoutAwarePage
    x:Name="pageRoot"
    x:Class="MyApp.Contents"
    DataContext="{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:MyApp"
    xmlns:common="using:MyApp.Common"
    xmlns:data="using:MyApp.Data"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <Page.Resources>
        <!-- Collection of items displayed by this page -->
        <CollectionViewSource
        x:Name="itemsViewSource"
        Source="{Binding Items}"
        d:Source="{Binding TestSource.Items, Source={d:DesignInstance Type=data:MyDataSource, IsDesignTimeCreatable=True}}"/>
    </Page.Resources>

    <!-- Snip Grid and Back Button -->

        <ListView
            x:Name="itemListView"
            AutomationProperties.AutomationId="ItemsListView"
            AutomationProperties.Name="Items"
            TabIndex="1"
            Grid.Row="1"
            Margin="-10,-10,0,0"
            Padding="120,0,0,60"
            ItemsSource="{Binding Source={StaticResource itemsViewSource}}"
            IsSwipeEnabled="False"
            ItemTemplate="{StaticResource ItemTemplate}"/>

这是支持它的C#(TestSource构造函数):

for (int i = 0; i < 20; ++i)
    TestSource.Items.Add(new ExampleData(TestSource));

在设计师中,这可以正常使用。我完全按照你的预期看到了20个ExampleData的列表。

但是,当我运行应用程序时,页面上不显示任何内容。没有出现“ExampleData”项目(即使我确定“TestSource.Items”可观察集合已正确填充。

我主要从SplitView演示中复制/粘贴此绑定示例。有谁看到什么是错的? = [

1 个答案:

答案 0 :(得分:1)

CollectionViewSource的源代码是Items,而不是TestSource.Items。您的设计源是正确的,但是当您运行时它将是错误的。应该是:

 <CollectionViewSource
    x:Name="itemsViewSource"
    Source="{Binding TestSource.Items}"
    d:Source="{Binding TestSource.Items, Source={d:DesignInstance Type=data:MyDataSource, IsDesignTimeCreatable=True}}"/>