発生した問題を理解するのに苦労しています。
私はこのように構造化された UserControl を持っています。
public class SomePage : Page
{
public static readonly DependencyProperty SomePropertyProperty =
DependencyProperty.Register("SomeProperty", typeof(IPropertyValue), typeof(SomeControl), new PropertyMetadata(null, new PropertyChangedCallback(OnSomePropertyChanged)));
private static void OnSomePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
//Do Some Stuff
}
}
そして、このようなViewModel
public class SomeViewModel : BindableBase
{
private IPropertyValue _prop;
public IPropertyValue Property
{
get
{
if (_prop== null)
_prop = new SomeConcreteValue();
return _prop;
}
}
}
スタッフ全体がページにバインドされています
<common:LayoutAwarePage>
<Page.DataContext>
<vm:SomeViewModel />
</Page.DataContext>
<ctrl:SomePage SomeProperty="{Binding Property}" />
</common:LayoutAwarePage>
私の理解では、DependencyProperty の値が変更されるたびに PropertyChangedCallbacked が呼び出されます。
ViewModel.Property の値は変更されませんが、DependencyProperty "SomeProperty" の値は、null から初期バインド値に変更されるため、変更されません。
プロパティが初期化されたら通知を受け取る可能性は他にありますか、それとも単にここに何かが欠けていますか?
編集:多分私はこれについて明確ではありませんでした。私の問題は、初期値が SomeProperty に設定されている場合、PropertyCahngedCallback が起動されないことです。