Серебряный переплет из объекта - PullRequest
1 голос
/ 28 сентября 2010

У меня есть список и в качестве ItemsSource я даю ему IList.

В этом объекте существует другой объект с именем {Пользователь}, и я пытаюсь привязать свойство {Имя пользователя} к textBlock.

Я пробовал что-то подобное, но безуспешно

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

Это полный 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> 

, и это из 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;
}

Может ли кто-нибудь помочь мне решить эту проблему?

Спасибо

1 Ответ

0 голосов
/ 28 сентября 2010

Есть ли у вашего объекта 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; }
}
...