将ListBox绑定到Silverlight中的列表不起作用

时间:2009-11-26 18:40:15

标签: c# silverlight data-binding

所有

我认为这是Silverlight中数据绑定最简单的例子......但很明显,即使这对我来说太复杂了:)

XAML:

<UserControl x:Class="SilverlightApplication1.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480">
<ListBox x:Name="rblSessions">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding SessionTitle}" Foreground="Black" FontSize="30" />
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

背后的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace SilverlightApplication1
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();

            List<Sessions> theSessions = makeSessions();
            rblSessions.ItemsSource = theSessions;
            rblSessions.DataContext = theSessions;

        }

        public List<Sessions> makeSessions()
        {
            List<Sessions> theReturn = new List<Sessions>();
            for (int i = 0; i < 20; i++)
            {
                Sessions s = new Sessions() { SessionID = i, SessionTitle = string.Format("title{0}", i) };
                theReturn.Add(s);
            }
            return theReturn;
        }

    }

    public class Sessions
    {
        public int SessionID;
        public string SessionTitle;
    }
}

当我运行应用程序时,我得到一个包含20个元素的列表框,但每个元素都是空的,只有大约5个像素高(虽然我将FontSize设置为“30”)

我做错了什么?请帮忙,谢谢

/乔纳森

1 个答案:

答案 0 :(得分:1)

您必须将Session类成员设置为属性才能在绑定中使用它们。这应该解决它:

public class Sessions
{
    public int SessionID { get; set; }
    public string SessionTitle { get; set; }
}