1

我正在研究将几个 WPF 功能添加到超过 1,000,000 行代码库的后勤工作。我正在研究在 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>
4

1 回答 1

2

当我想使用模板来显示列表项的各种属性时,问题就出现了。我的理解是它们都必须是 DependencyProperties。parent 只是一个属性。看起来添加依赖属性相当复杂。您要显示的所有类都必须从 DependencyObject 继承,并且您必须为要使用的每个属性设置一堆东西。

这不是真的。

您需要使用 Dependency Property让您的类型实现INotifyPropertyChanged,但这仅在您希望绑定双向工作时才需要。存在此要求以便 WPF 在属性值更改时收到通知,并且 UI 可以自动更新。但是,如果在显示屏幕时属性值没有变化,则没有要求(除了值是属性,而不是字段)。

如果您只是在对象中显示值,并且它们在显示时不会更改,则标准属性将正常工作。

于 2012-05-22T19:44:28.597 回答