我正在开发一个自定义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>
答案 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
。