Все, что связано с DependencyProperty
, не будет напрямую вызывать созданное вами свойство CLR. Чтобы на самом деле узнать, изменился ли DependencyProperty
, вам нужно создать PropertyChangedCallback
, как показано ниже.
//Never used by xaml that binds to CurrentItem
//Only used when referenced directly by C# code
//Example: (obj as MediaItemControl).CurrentItem = new TypedMediaItem();
public TypedMediaItem CurrentItem{
get { return (TypedMediaItem) GetValue(CurrentItemProperty ); }
set { SetValue(CurrentItemProperty , value); }
}
//Used by xaml binding
public static readonly DependencyProperty CurrentItemProperty =
DependencyProperty.Register("CurrentItem", typeof(TypedMediaItem),
typeof(MediaItemControl), new PropertyMetadata(null, new PropertyChangedCallback(OnCurrentItemChanged)));
private static void OnCurrentItemChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) {
//TODO: Set break point here
//If this code is executed, then the property was changed
MediaItemControl instance = (MediaItemControl) d;
TypedMediaItem newValue = (TypedMediaItem) e.NewValue;
return;
}
Это не дает точного ответа на ваш вопрос, но должно помочь вам отладить немного дальше.
Если вы все еще не можете понять, что не так, то я собираюсь получить больше информации, потому что все, что вы предоставили, выглядит для меня правильно. Например, ошибка, которую вы получаете или больше кода на MediaItemControl
. Вы также можете загрузить проект куда-нибудь, и я смогу посмотреть на него.