ListView在运行时显示空TextBlocks

时间:2012-12-27 02:16:48

标签: c# xaml listview data-binding design-time

我遇到了数据绑定的奇怪问题。在设计器中,一切都正确显示,但在运行时我的ListView只包含那些带有空字符串的TextBlocks。我正在为ViewModels使用MVVM灯。大多数代码都是由VS2012通过为WindowsStore-Apps创建拆分页面生成的。

这是我的XAML :(我已经删除了一些其他部分,例如VisualStateManager,但没有效果,所以这似乎不是问题。)

<common:LayoutAwarePage
    x:Name="pageRoot"
    x:Class="Kunden.OrderPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:Kunden"
    xmlns:common="using:Kunden.Common"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    DataContext="{Binding SelectCustomersViewModel, Source={StaticResource Locator}}">

    <Page.Resources>
        <CollectionViewSource
            x:Name="itemsViewSource"
            Source="{Binding Items}"/>
    </Page.Resources>

    <Grid Style="{StaticResource LayoutRootStyle}">
        <Grid.RowDefinitions>
            <RowDefinition Height="140"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition x:Name="primaryColumn" Width="610"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>

        <Grid x:Name="titlePanel">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>
            <Button
                x:Name="backButton"
                Click="GoBack"
                IsEnabled="{Binding DefaultViewModel.CanGoBack, ElementName=pageRoot}"
                Style="{StaticResource BackButtonStyle}"/>
            <TextBlock x:Name="pageTitle" Grid.Column="1" Text="Werbeauswahl" Style="{StaticResource PageHeaderTextStyle}" Margin="0,0,-2,40"/>
        </Grid>

        <!-- Elementliste mit vertikalem Bildlauf -->
        <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"
            IsSwipeEnabled="False"
            SelectionChanged="ItemListView_SelectionChanged"
            ItemsSource="{Binding AvaiableCountries}">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Name}"/>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
... closing brackets etc.

我要绑定的IEnumerable

private IEnumerable<Country> avaiableCountries;

        public IEnumerable<Country> AvaiableCountries
        {
            get { return avaiableCountries; }
            set { avaiableCountries = value; RaisePropertyChanged(() => AvaiableCountries); }
        }

我的LINQ-Query所需的数据值对象Country

public class Country
    {
        internal string Name { get; set; }
    }

1 个答案:

答案 0 :(得分:1)

请尝试将名称属性的访问修饰符从internal更改为public并查看是否可以解决您的问题?

如果在您使用数据填充AvaiableCountries的代码

之后不起作用