Я пытаюсь изменить стиль пользовательского элемента управления на основе локального свойства. Я попытался использовать свойства зависимостей и реализовать INotifyPropertyChanged, но ничего не работает. Я новичок в WPF, поэтому я надеюсь, что это что-то простое. Спасибо за вашу помощь.wpf datatrigger не видит свойства управления пользователем
Стиль, расположенный в ResourceDictionary пользовательского элемента управления .xaml. Если вы удалите данные, эффект будет применен правильно.
<Style x:Name="Showing" TargetType="Border">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsShowing}" Value="True">
<Setter Property="Effect">
<Setter.Value>
<DropShadowEffect ShadowDepth="0"
Color="Orange"
Opacity="1"
BlurRadius="1"
Direction="100"/>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
Событие PropertyChanged становится поднятый при изменении свойства.
Public Class ucLCGPulseWindowMini
Implements INotifyPropertyChanged
Public Event PropertyChanged(sender As Object, e As PropertyChangedEventArgs) Implements INotifyPropertyChanged.PropertyChanged
Public Shadows Sub OnPropertyChanged(sender As Object, e As PropertyChangedEventArgs)
If Not e Is Nothing Then
RaiseEvent PropertyChanged(Me, e)
End If
End Sub
Private blnShowing As Boolean = False
Public Property IsShowing() As Boolean
Get
Return blnShowing
End Get
Set(ByVal value As Boolean)
blnShowing = value
OnPropertyChanged(Me, New PropertyChangedEventArgs("IsShowing"))
End Set
End Property
После установки свойства IsShowing Истина во время выполнения, я могу смотреть на границе элемента в WPF инспектора и он видит на спусковой крючок, но говорит IsShowing == True Value{x:Null}
. Однако, если посмотреть на экземпляр пользовательского элемента управления в WPF инспектора он показывает IsShowing = True
Вы уверены, что IsShowing делает правильное уведомление об изменении? –
Вы можете увидеть мою реализацию INotifyPropertyChanged выше. Правильно ли это выглядит? Как я уже упоминал, событие PropertyChanged возникает при изменении свойства. Наконец, заметил, что я дефолтовал blnShowing на False. Я бы ожидал, что инспектор WPF будет считать это не X: Null. Я предполагаю, что это связанная проблема, но я так новичок в WPF, это просто догадка. – ScottW
Извините, мой плохой, не заметил уведомления об изменении. Он отлично работает для меня, единственное, что мне пришлось изменить, - установить BlurRadius на 10, потому что 1 не хватило. Вы указываете ключ, поэтому вам нужно явно применять стиль к каждой границе, которая его использует, можете ли вы показать код, где вы это делаете? –