Я пытался настроить привязку из dependency property
в пользовательском элементе управления, который я написал, и заметил, что привязка не обновляется правильно. Я должен отметить, что я просто связываю с собственности.
Свойство довольно стандартное, например:
public bool HasText
{
get => (bool)GetValue(HasTextProperty);
private set => SetValue(HasTextProperty, value);
}
public static readonly DependencyProperty HasTextProperty = DependencyProperty.Register(
nameof(HasText), typeof(bool), typeof(TextEditor), new PropertyMetadata(false));
Теперь я впервые попробовал скомпилированное связывание, которое не удалось (оно не показывало ошибок, но оно просто не работало):
<controls:TextEditor x:Name="SomeTextEditor"/>
<controls:SomeControl IsEnabled="{x:Bind SomeTextEditor.HasText, Mode=OneWay}"/>
Затем я попытался использовать классическую привязку, и это прекрасно работало:
<controls:TextEditor x:Name="SomeTextEditor"/>
<controls:SomeControl IsEnabled="{Binding ElementName=SomeTextEditor, Path=HasText}"/>
Теперь я должен сказать, что не уверен, почему это происходит. dependency property
имеет встроенную поддержку уведомлений, иначе классическая привязка также не будет работать. И я не забыл, что x:Bind
по умолчанию равен Mode=OneTime
, но даже после ручной установки его на Mode=OneWay
он все равно не работал.
Есть идеи? Я вполне мог бы упустить что-то очевидное здесь.
Спасибо! ?