对大型软件项目使用数据绑定的明智方法

本文关键字:方法 数据绑定 大型 软件 项目 | 更新日期: 2023-09-27 18:35:05

我正在研究将几个 WPF 功能添加到 1,000,000+ 行代码库中的后勤工作。我正在研究在 XAML 中使用数据绑定和数据模板来轻松显示各种对象。我能够绑定一个可观察的集合:points到ListBox,如果我不使用模板,我可以为列表项提供一个有意义的toString,这让我到达了某个地方。当我想使用模板显示列表项的各种属性时,问题就出现了。我的理解是,它们都必须是依赖属性。 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>

对大型软件项目使用数据绑定的明智方法

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

这不是真的。

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

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