1

ランキング RankingInfo1 とrankinginfo 2 をリストボックスにバインドするにはどうすればよいですか? 基本的に、3 レベルの階層に問題があります。RankingInfo1 -> RankingInfo -> ランキング。

public class BookInfo
{
    private long _BookId = 0;
    public long BookId
    {
        get
        {
            return _BookId;
        }
        set
        {
            _BookId = value;

        }
    }     

    private string _BookTitle = string.Empty;
    public string BookTitle
    {
        get
        {
            return _BookTitle;
        }
        set
        {
            _BookTitle = value;

        }
    }

    public List<RankInfo> RankingInfo1 { get; set; }
    public List<RankInfo> RankingInfo2 { get; set; }

}

public class RankInfo {
    public int? Ranking { get; set; }
    public DateTime? WeekDate { get ; set ;}
}

私が試したことは、出力として booklocator.Model.RankInfo を取得していることです。

 <ListBox  x:Name="lstrankingUSAToday" ItemsSource="{Binding RankingInfo1}" Grid.ColumnSpan="2">
                            <StackPanel Width="Auto">
                                <TextBlock Text="Ranked USA Today: "/>
                                <TextBlock Text="{Binding Ranking}"></TextBlock>
                            </StackPanel>
                        </ListBox>
4

1 に答える 1

2

ItemsControl値のリストをバインドするために使用する必要があります。簡単なデモをお試しください。さらにサポートが必要な場合はお任せください。

XAML

<ListBox ItemsSource="{Binding Items}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel>
                <TextBlock Text="{Binding BookId}" FontSize="20" />
                <TextBlock Text="{Binding BookTitle}" FontSize="20" />
                <ItemsControl ItemsSource="{Binding RankingInfo1}" Margin="0 20 0 0">
                    <ItemsControl.ItemTemplate>
                        <DataTemplate>
                            <Border BorderBrush="Blue" BorderThickness="2">
                                <TextBlock Text="{Binding Ranking}" FontSize="20" />
                            </Border>
                        </DataTemplate>
                    </ItemsControl.ItemTemplate>
                </ItemsControl>
                <ItemsControl ItemsSource="{Binding RankingInfo2}" Margin="0 20 0 0">
                    <ItemsControl.ItemTemplate>
                        <DataTemplate>
                            <Border BorderBrush="Red" BorderThickness="2">
                                <TextBlock Text="{Binding Ranking}" FontSize="20" />
                            </Border>
                        </DataTemplate>
                    </ItemsControl.ItemTemplate>
                </ItemsControl>
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

C#

public List<BookInfo> Items { get; set; }

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    var _RankingInfo1 = new List<RankInfo> 
    { 
        new RankInfo { Ranking = 1, WeekDate = DateTime.Now },
        new RankInfo { Ranking = 2, WeekDate = DateTime.Now }
    };

    var _RankingInfo2 = new List<RankInfo> 
    { 
        new RankInfo { Ranking = 10, WeekDate = DateTime.Now.AddDays(-2) },
        new RankInfo { Ranking = 20, WeekDate = DateTime.Now.AddDays(-2) }
    };

    Items = new List<BookInfo> 
    { 
        new BookInfo { BookId = 9, BookTitle = "My Book Title", RankingInfo1 = _RankingInfo1, RankingInfo2 = _RankingInfo2 }
    };

    this.DataContext = this;
}
于 2013-10-26T11:08:14.077 に答える