【发布时间】:2013-01-25 18:29:34
【问题描述】:
我有一个绑定到对象列表的 ListView。当我在 ListView 中选择一个项目时,我会捕获一个 SelectionChanged 事件,然后将所选对象传递给详细信息视图。
protected void list_selectionChanged(object sender, SelectionChangedEventArgs e) {
var myObject = theList.SelectedItem as MyObjectType;
detailsView.DataContext = myObject;
}
detailsView 是与 ListView 相同的 WPF 中的 UserControl。它包含一些 XAML,如下所示:
<Label Content="{Binding Path=deviceId}"></Label>
<l:MyUc deviceId="{Binding Path=deviceId}" />
在 MyUC 中,我定义了一个 DependencyProperty:
public static readonly DependencyProperty deviceIdProperty = DependencyProperty.Register("deviceId", typeof(Guid), typeof(MyUC), new FrameworkPropertyMetadata(null));
public Guid deviceId {
get { return (Guid)GetValue(deviceIdProperty); }
set { SetValue(deviceIdProperty, value); }
}
Label 显示的是 deviceId,但 MyUC 中的属性永远不会被设置。
谁能看出我的错误?
【问题讨论】:
-
InotifyPropertyChanged 我想是问题。在 set 函数中应该引发 PropertyChanged 事件
-
如果您复制/粘贴代码,我会说问题可能是您需要在 xaml 的第二行(代码的第二部分)中使用大写 P
-
@iltzortz 我实际上在该属性集中有一个断点,它永远不会被调用。
-
@ppetrov 谢谢,这是创建问题的一个问题。实际代码大写正确。
-
新的 FrameworkPropertyMetadata(null));也许尝试 SqlGuid.Null 而不是 null