【问题标题】:View Model, Dependency Properties Confusion查看模型,依赖属性混乱
【发布时间】:2011-09-10 22:44:27
【问题描述】:

我正在开发一个自定义 WPF 控件并且对如何使用依赖属性感到困惑。我的视图模型包含 2 个属性:

class Customer {
  string Name;
  string ID;
}

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

Q1:我需要在我的自定义控件中定义任何依赖属性(例如“名称”、“ID”)吗?

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

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

【问题讨论】:

  • 通常你不会为了显示一些数据而创建自定义控件,而是使用datatemplates。

标签: wpf view model dependencies properties


【解决方案1】:

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

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

第二季度。通过DataContext。例如,您可能有这样的事情:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-16
    • 2013-09-25
    • 2015-10-17
    • 2012-12-17
    • 2017-01-31
    • 1970-01-01
    • 2017-03-13
    • 2016-11-19
    相关资源
    最近更新 更多