我有一个非常简单的问题:
我有一个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;
但没有人列出第一个给定的代码。我对如何解决这个绑定问题很困惑,并会对任何帮助感到高兴=)
答案 0 :(得分:2)
这个问题没有任何意义。
您是否应该在代码中填充ListBox.Items
而不是将ItemsSource
绑定到集合?如果是这样,就根本不需要创建绑定;您的代码隐藏应该类似于:
MyListBox.Items.AddRange(myCollection);
您是否应该在代码中而不是在XAML中创建与Name
属性的绑定?在这种情况下,您需要在Label
中找到DataTemplate
对象并在其上创建绑定。很难想象在哪种情况下这是一个好主意。
如果你被问到“为什么这样做?”,说,“因为我被告知”真的不是答案。你需要找出你被要求这样做的原因。除此之外,了解原因将有助于您理解您想要提出的问题。
答案 1 :(得分:0)
您是否尝试过使用ItemsSourceProperty
代替ContentProperty
?