C#背后的代码中的数据绑定

时间:2010-07-27 08:44:49

标签: c# wpf data-binding

我有一个非常简单的问题:

我有一个People属性,其类型为List<人>一个人有一个姓名和姓氏。 我想在listBoxPerson上显示Name,我想在代码后面进行绑定操作 - 不想使用ItemsSource属性 - 这是我的代码片段:

Binding userBinding = new Binding();
        userBinding.Source =People;
        userBinding.Path = new PropertyPath("Person.Name");
        listBoxPerson.SetBinding(ContentProperty, userBinding);

这是我的xaml代码:

 < ListBox Height="303" HorizontalAlignment="Left" Margin="12,108,0,0" Name="listBoxPerson" VerticalAlignment="Top" Width="234" >

        < ListBox.Resources >
            < ObjectDataProvider x:Key="UserData" ObjectType="local:Person"/ >
        < /ListBox.Resources >
        < ListBox.ItemTemplate >
            < DataTemplate >
                < Label Content="{Binding Path=Name}" ></Label  >
            < /DataTemplate >
        < /ListBox.ItemTemplate >
    < /ListBox >

当我写

时,这是有效的
listboxPerson.ItemsSource= People;

但没有人列出第一个给定的代码。我对如何解决这个绑定问题很困惑,并会对任何帮助感到高兴=)

2 个答案:

答案 0 :(得分:2)

这个问题没有任何意义。

您是否应该在代码中填充ListBox.Items而不是将ItemsSource绑定到集合?如果是这样,就根本不需要创建绑定;您的代码隐藏应该类似于:

MyListBox.Items.AddRange(myCollection);

您是否应该在代码中而不是在XAML中创建与Name属性的绑定?在这种情况下,您需要在Label中找到DataTemplate对象并在其上创建绑定。很难想象在哪种情况下这是一个好主意。

如果你被问到“为什么这样做?”,说,“因为我被告知”真的不是答案。你需要找出你被要求这样做的原因。除此之外,了解原因将有助于您理解您想要提出的问题。

答案 1 :(得分:0)

您是否尝试过使用ItemsSourceProperty代替ContentProperty