Data binding 来自对象的Silverling绑定
我有一个列表框,作为ItemsSource,我给它一个IList 在这个对象中存在另一个名为{User}的对象,我试图将属性{Username}绑定到一个textBlock上 我试过这样的方法,但没有成功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
<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。确保用户名是对象上的公共属性。