Я сделал CustomControl, с DP Threshold
, вот так:
public class SymbolControl : Control
{
public static readonly DependencyProperty ThresholdProperty = DependencyProperty.Register("Threshold", typeof(IThreshold<SolidColorBrush>), typeof(SymbolControl));
public IThreshold<SolidColorBrush> Threshold
{
get { return (IThreshold<SolidColorBrush>)GetValue(ThresholdProperty); }
set { SetValue(ThresholdProperty, value); }
}
...
}
Вот где свойство используется в xaml
пользовательского элемента управления:
...
<Border.Background>
<MultiBinding Converter="{StaticResource ThreshholdToReturnValueConverter}" NotifyOnTargetUpdated="True" >
<Binding Path="Threshold" RelativeSource="{RelativeSource TemplatedParent}" NotifyOnTargetUpdated="True" />
<Binding Path="SymbolValue" RelativeSource="{RelativeSource TemplatedParent}" NotifyOnTargetUpdated="True" />
<Binding Path="DefaultBackground" RelativeSource="{RelativeSource TemplatedParent}" NotifyOnTargetUpdated="True" />
</MultiBinding>
</Border.Background>
...
А вот как используется CustomControl:
<controls:SymbolControl ... Threshold="{Binding Threshold, NotifyOnTargetUpdated=True, Converter={StaticResource DummyConverter}}" .../>
Когда я звоню NotifyPropertyChanged(nameof(Threshold))
, CustomControl не обновляется.
Однако я поместил фиктивный преобразователь с точкой останова в привязку Threshold при создании экземпляра пользовательского элемента управления, и эта точка останова срабатывает, когда я вызываю NotifyPropertyChanged(nameof(Threshold))
, поэтому кажется, что привязка не обновляет цель?
Я также попытался добавить PropertyChangedCallback
для DP ThresholdProperty
с точкой останова, в которой срабатывает только при первоначальном создании исходного свойства.
Я также обнаружил, что выполнение этого во ViewModel приводит к обновлению пользовательского элемента управления:
var temp = Threshold;
Threshold = null;
Threshold = temp;
Я много занимался поиском в Интернете, и мне не повезло, есть идеи, в чем проблема?