我正在研究为1,000,000多行代码库添加几个WPF功能的后勤工作。我正在研究在XAML中使用数据绑定和DataTemplates来轻松显示各种对象。我能够将一个可观察的集合points
绑定到一个ListBox,如果我不使用模板,我可以为列表项提供一个有意义的toString,这可以让我到达某个地方。当我想使用模板显示列表项的各种属性时,问题就出现了。据我所知,他们都必须是DependencyProperties。 parent
只是一个属性。看起来添加依赖项属性相当复杂。您要显示的所有类都必须从DependencyObject
继承,并且您必须为要使用的每个属性设置一堆内容。对于大型代码库来说,这似乎不可行,必须为每个属性执行所有这些操作。
我想知道在实践中如何使用数据绑定,你真的为你的所有类添加了大量的依赖属性,还是有更好的方法?
谢谢!
<ListBox Name="listBox1"
ItemsSource="{Binding Source={StaticResource points}}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="Point!"/>
<TextBlock Text="{Binding parent}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
答案 0 :(得分:2)
当我想使用模板显示列表项的各种属性时,会出现问题。据我所知,他们都必须是DependencyProperties。父母只是一个财产。看起来添加依赖项属性相当复杂。您要显示的所有类都必须从DependencyObject继承,并且您必须为要使用的每个属性设置一堆内容。
事实并非如此。
您需要使用依赖属性或将您的类型实现为INotifyPropertyChanged
,但只有在您希望绑定双向工作时才需要这样做。存在此要求,以便在属性值更改时通知WPF,并且UI可以自动更新。但是,如果在显示屏幕时属性值没有改变,则没有要求(除了值是属性,而不是字段)。
如果您只是在对象中显示值,并且在显示时它们不会更改,则标准属性将正常工作。