0

我正在尝试将类的实例绑定到 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;
        }
    }

}

现在我正在尝试将该实例绑定ListBoxMainPage.xaml. 我已经为此创建ItemTemplateListBox. 好像如果我把DataContextGrid的 放到FanfouHTL(class)里面, ; 里面什么都不会显示ListBox。如果我将 DC 设置为fanfouHomeTL(实例),MainPage将在InitializeComponent.

任何提示将不胜感激。

4

1 回答 1

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>
于 2013-01-25T14:46:18.923 回答