2010-09-28 3 views
1

J'ai une listbox et comme ItemsSource je lui donne un IList.Liaison Silverling à partir de l'objet

Dans cet objet existe un autre objet avec le nom {User} et j'essaye de lier la propriété {Username} sur un bloc de texte.

J'ai essayé quelque chose comme ça, mais sans chance

<TextBlock x:Name="usernamtTBL" Text="{Binding 'User.Username'}"/> 

C'est tout le code XAML de listbox

<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> 

et c'est de codebehind

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; 
} 

Quelqu'un pourrait-il aider moi résoudre ce problème?

Merci

+0

Où définissez-vous votre DataContext? Pourriez-vous montrer plus de votre XAML? – JSprang

+0

pouvez-vous poster xaml pertinente et le code –

+0

C'est ma première application avec Silverlight, donc je ne sais pas si ce que j'ai posté peut vous aider. – StrouMfios

Répondre

0

Votre objet NewsFeed un « get » public pour que la valeur peut être lié à? J'ai reproduit votre code comme indiqué ci-dessous (à l'exception de simplement définir la source à une ObservableCollection et n'a pas appelé un service) et cela a fonctionné.

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; } 
} 
+0

Vous ne définissez que le {Texte}, je n'ai aucun problème avec cette propriété. Le problème est avec {User.Username} – StrouMfios

+0

mis à jour pour utiliser le nom d'utilisateur aussi, qui fonctionne également. Je n'ai pas changé votre XAML du tout. Assurez-vous que le nom d'utilisateur est une propriété publique sur votre objet. – JSprang

+0

Ok, je vais vérifier. Tahnks – StrouMfios

Questions connexes