我正在尝试将类的实例绑定到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
上失败。
任何提示都将受到高度赞赏。
答案 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>