对大型软件项目使用数据绑定的合理方法。

时间:2012-05-22 19:42:33

标签: c# wpf xaml data-binding

我正在研究为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>

1 个答案:

答案 0 :(得分:2)

  

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

事实并非如此。

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

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