数据绑定到类的实例

时间:2013-01-25 13:36:44

标签: c# binding collections

我正在尝试将类的实例绑定到C#中的ListBox。

在我的MainPage.xaml.cs

 protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            if (fan == null)
                fan = (Fanfou)e.Parameter;

            RefreshHomeTimeLine(fan.oauth_token, fan.oauth_token_secret);

        }

        private async void RefreshHomeTimeLine(string access, string access_secret)
        {
            string text=await fan.getFanfouApi("http://api.fanfou.com/statuses/home_timeline.json", access, access_secret);
            fanfouHomeTL = JsonConvert.DeserializeObject<FanfouHTL>(text);
        }

fanfouHomeTL很好,包含一系列状态。

该类的声明是:

public class FanfouHTL
{
    private ObservableCollection<Status> statuses;

    public ObservableCollection<Status> Statuses
    {
        get
        {
            return statuses;
        }
        set
        {
            statuses = value;
        }
    }

}

现在我正尝试将该实例绑定到ListBox中的MainPage.xaml(在网格中)。我已经为ItemTemplate创建了ListBox。似乎如果我将网格的DataContext放到FanfouHTL(类),ListBox中就不会显示任何内容。如果我将DC设置为fanfouHomeTL(实例),MainPage将在InitializeComponent上失败。

任何提示都将受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

您是否正在初始化实例?尝试创建FanfouHTL的公共属性实例,将列表框的数据上下文设置为您的控件,然后绑定到属性的集合,如此

public FanfouHTL Foobar {get;private set;}
//...snip...

public MyComponent(){
  Foobar = new FanfouHTL();
  InitialiseComponent();
}

然后,在你的XAML中

<UserControl x:Name="MyComponent" DataContext="{Binding RelativePath=Self}">
<!--(can't remember exact syntax here off the top of my head, but run with it)-->
    <ListBox ItemSource="{Binding Path=Foobar.Statuses}" />
</UserControl>