代码之家  ›  专栏  ›  技术社区  ›  profanis

对象的银色绑定

  •  1
  • profanis  · 技术社区  · 16 年前

    在这个对象中存在另一个名为{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;
    }
    

    谢谢

    1 回复  |  直到 16 年前
        1
  •  0
  •   JSprang    16 年前

    您的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; }
    }
    
    推荐文章