WPF 绑定未设置为用户控件依赖项属性
本文关键字:控件 依赖 属性 用户 绑定 设置 WPF | 更新日期: 2023-09-27 17:55:57
>我有一个绑定到对象列表的列表视图。当我在 ListView 中选择一个项目时,我捕获了一个SelectionChanged
事件,然后将所选对象传递给详细信息视图。
protected void list_selectionChanged(object sender, SelectionChangedEventArgs e) {
var myObject = theList.SelectedItem as MyObjectType;
detailsView.DataContext = myObject;
}
detailsView 是与列表视图位于同一 WPF 中的用户控件。它包含一些 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); }
}
标签显示设备 ID,但 MyUC 中的属性永远不会设置。
谁能发现我的错误?
在 XAML 中使用依赖项属性时,永远不会调用 set 方法。 如果你想"看到"这个集合,你需要添加一个属性更改的回调,因为绑定机制直接设置依赖属性,而没有你的 setter。
有关如何实现此目的的详细信息,请参阅 MSDN 的 PropertyChanged 回调部分。
首先,如果可以在定义 ListView 及其属性的位置添加实际的 XAML 代码,这将很有帮助。
其次,您应该查看输出控制台(当然是在 Visual Studio 调试会话中),并查看是否存在与你定义的绑定相关的绑定错误。
绑定提供的值很可能不适合 deviceId 依赖项属性类型,因此永远不会更改。