【发布时间】:2013-06-18 02:13:17
【问题描述】:
我正在使用 MVVM 开发 WPF 应用程序。主窗口上有一个客户姓名组合框。选择客户后,我想显示其地址。
所以我创建了一个地址用户控件,并在控件后面的代码中添加了一个 DP:
public static DependencyProperty CustomerIdProperty =
DependencyProperty.Register("CustomerId", typeof(int), typeof(AddressView));
public int CustomerId
{
get { return (int)GetValue(CustomerIdProperty); }
set { SetValue(CustomerIdProperty, value); }
}
接下来,在主窗口中,我将组合绑定到用户控件的 CustomerId DP:
<vw:AddressView Grid.Row="1"
Grid.Column="0"
x:Name="AddressList"
CustomerId="{Binding ElementName=CustomersList, Path=SelectedCustomer.Id, Mode=TwoWay}"/>
我现在有一个问题和一个问题:
问题:当我运行它并选择一个客户时,DP 上的设置器永远不会触发。主窗口中的 SelectedCustomer 属性会触发,但不会触发用户控件中的 DP。
问题:控件的ViewModel如何知道DP中的CustomerId?
我在这里创建了一个小示例应用程序来演示我在做什么:
我将不胜感激。
谢谢
【问题讨论】:
-
如果依赖属性是通过绑定设置的,则不会调用 Get/Set,这只是为了在本地代码库中使用,如果需要检查它,可以将 PropertyChangedCallback 添加到 DependencyProperties MetaData正在分配
-
好的,我明白了。但这仍然没有回答后面代码中 CustomerID 的值如何到达 ViewModel 的问题?
-
@kmarois:通过绑定系统。如果您想知道它是如何工作的 start here 并继续阅读。
标签: wpf mvvm user-controls