0

データバインディングで奇妙な問題が発生しています。デザイナーではすべてが正しく表示されますが、実行時に ListView には空の文字列を含む TextBlocks だけが含まれます。ViewModel に 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); }
        }

CountryLINQ-Query に必要なデータ値オブジェクト:

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

1 に答える 1

1

Name プロパティのアクセス修飾子を から に変更してみてinternalpublic問題が解決するかどうかを確認してください。

それがうまくいかない場合は、 AvaiableCountries にデータを入力しているコードを投稿してください

于 2012-12-27T05:02:01.177 に答える