0

我在数据绑定方面遇到了一个奇怪的问题。在设计器中,一切都正确显示,但在运行时我的 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); }
        }

Country我的 LINQ 查询所需的数据值对象:

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

1 回答 1

1

请尝试将 Name 属性的访问修饰符从internalto更改为public,看看是否可以解决您的问题?

如果这不起作用,请发布您使用数据填充 AvaiableCountries 的代码

于 2012-12-27T05:02:01.177 回答