У меня есть ListView, который привязан к списку объектов. Когда я выбираю элемент в ListView, я поймаю событие SelectionChanged
, а затем передаю выбранный объект в режим просмотра деталей.WPF привязка не устанавливается в UserControl DependencyProperty
protected void list_selectionChanged(object sender, SelectionChangedEventArgs e) {
var myObject = theList.SelectedItem as MyObjectType;
detailsView.DataContext = myObject;
}
detailsView - это UserControl в том же WPF, что и ListView. Он содержит некоторые 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); }
}
Этикетка показывает DeviceId, но свойство внутри MyUC никогда не получает набор.
Может ли кто-нибудь определить мою ошибку?
InotifyPropertyChanged, я думаю, проблема. в функции set событие PropertyChanged должно быть поднято – iltzortz
, если вы скопируете/вставляете свой код, я бы сказал, что проблема может заключаться в том, что вам нужна капитализация P во второй строке вашего xaml (вторая часть кода) – ppetrov
@iltzortz I ' В действительности у меня есть точка останова в наборе этого свойства, и она никогда не вызывается. – bugfixr