Data binding 来自对象的Silverling绑定

Data binding 来自对象的Silverling绑定,data-binding,silverlight-4.0,Data Binding,Silverlight 4.0,我有一个列表框,作为ItemsSource,我给它一个IList 在这个对象中存在另一个名为{User}的对象,我试图将属性{Username}绑定到一个textBlock上 我试过这样的方法,但没有成功 <TextBlock x:Name="usernamtTBL" Text="{Binding 'User.Username'}"/> 这是listbox的完整XAML代码 <ListBox Height="275" x:Name="NewsFeedLB" Canvas.Le

我有一个列表框,作为ItemsSource,我给它一个IList

在这个对象中存在另一个名为{User}的对象,我试图将属性{Username}绑定到一个textBlock上

我试过这样的方法,但没有成功

<TextBlock x:Name="usernamtTBL" Text="{Binding 'User.Username'}"/>
这是listbox的完整XAML代码

<ListBox Height="275" x:Name="NewsFeedLB" Canvas.Left="8" Canvas.Top="8" Width="427" Background="White">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Canvas Height="57" Width="265" d:DesignWidth="265" d:DesignHeight="155">
                <Border BorderBrush="Black" BorderThickness="1" Height="35" Canvas.Left="8" Canvas.Top="8" Width="48">
                    <Image x:Name="thumbIMG" Margin="7"/>
                </Border>
                <TextBlock x:Name="usernamtTBL" Text="{Binding 'User.Username'}" Height="12" Canvas.Left="71" TextWrapping="Wrap" Canvas.Top="8" Width="180"/>
                <TextBlock x:Name="statusTBL" Text="{Binding 'Text'}" Height="12" Canvas.Left="71" TextWrapping="Wrap" Canvas.Top="24" Width="180"/>
            </Canvas>                       
        </DataTemplate>         
    </ListBox.ItemTemplate> 
</ListBox> 
这是来自代码隐藏

private void MainPage_Loaded(object sender, System.Windows.RoutedEventArgs e) {
    var newsFeedWcfClient = new NewsFeedWCFClient();
    newsFeedWcfClient.GetNewsFeedItemsCompleted += new EventHandler<GetNewsFeedItemsCompletedEventArgs>(newsFeedWcfClient_GetNewsFeedItemsCompleted);
    newsFeedWcfClient.GetNewsFeedItemsAsync();
}

void newsFeedWcfClient_GetNewsFeedItemsCompleted(object sender, GetNewsFeedItemsCompletedEventArgs e) {
    var source = (IList<NewsFeed>)e.Result;
    NewsFeedLB.ItemsSource = source;
}
有人能帮我解决这个问题吗


谢谢

您的NewsFeed对象上是否有公共“get”以便可以绑定该值?我复制了如下所示的代码,只是简单地将源代码设置为ObservableCollection,并且没有调用服务,它就工作了

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

        ObservableCollection<NewsFeed> source = new ObservableCollection<NewsFeed>() { new NewsFeed() { Text = "This is a test", User = new User(){Username="Test Name"} } };
        NewsFeedLB.ItemsSource = source;
    }
}

public class NewsFeed
{
    public string Text { get; set; }
    public User User { get; set; }
}

public class User
{
    public string Username { get; set; }
}

您在哪里设置数据上下文?你能展示更多你的XAML吗?你能发布相关的XAML和代码吗?这是我第一个使用silverlight的应用程序,所以我不知道我发布的内容是否能帮助你。是你的NewsFeed对象上有.Text和.User.Username属性吗?您可以显示您的NewsFeed对象吗?是的,文本是NewsFeed对象的属性,用户名是User的属性,User是NewsFeed的属性。我无法发布该对象,因为它来自.net实体,并且自动生成的代码太多。您只设置了{Text},我对此属性没有任何问题。问题在于{User.Username}也被更新为使用用户名,这同样有效。我根本没有改变你的XAML。确保用户名是对象上的公共属性。