查看模型,依赖属性混淆

时间:2011-06-08 14:31:29

标签: wpf view model dependencies properties

我正在开发一个自定义WPF控件,并且混淆了如何使用依赖项属性。我的视图模型包含2个属性:

class Customer {
  string Name;
  string ID;
}

我的自定义控件负责显示这些字段。

Q1:我是否需要在自定义控件中定义任何依赖项属性(例如“Name”,“ID”)?

Q2:我正在使用ItemsControl来显示客户列表。 Customer对象如何传递给我的自定义控件?它是通过DataContext完成还是我需要在我的控件和xaml中添加“Customer”依赖项属性,将“Customer”绑定到“something”(那是什么东西)?

<ItemPresenter>
   <MyCustomControl  Customer="??what should i put here???"/>
</ItemPresender>

1 个答案:

答案 0 :(得分:1)

Q1。为什么你有自定义控件?通常,您只需创建一个UserControl(WPF在UserControl和自定义控件之间有区别),并将UserControl中的属性绑定到视图模型的属性中。例如(让我们称之为CustomerView):

<UserControl ...>
    <StackPanel>
        <TextBlock Text="{Binding ID}"/>
        <TextBox Text="{Binding Name}"/>
    </StackPanel>
</UserControl>

Q2。通过DataContext。例如,您可能会遇到以下情况:

<ItemsControl ItemsSource="{Binding Customers}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <local:CustomerView/>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

ItemsControl生成的每个项目都会将相关数据项设置为DataContext。因此,每个CustomerView都有Customer作为其DataContext