我試圖根據本地屬性更改用戶控件的樣式。我試過使用依賴屬性和實現INotifyPropertyChanged,但沒有任何工作。我是新來的WPF,所以我希望這是簡單的。謝謝你的幫助。wpf datatrigger未看到用戶控件屬性
樣式位於用戶控件.xaml文件的ResourceDictionary中。 如果刪除數據觸發器,則會正確應用該效果。
<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屬性設置爲True後,我可以看看在WPF督察邊框元素,它看到了扳機,但說IsShowing == True Value{x:Null}
。不過,如果我看在WPF檢查用戶控件的實例就說明這裏的答案IsShowing =真
你確定IsShowing正在做適當的更改通知嗎? –
你可以看到我上面的INotifyPropertyChanged的實現。這看起來正確嗎?正如我所提到的,PropertyChanged事件在屬性更改時引發。最後,我注意到我默認爲虛假。我會希望WPF檢查員反映,不是X:空。我猜這是一個有約束力的問題,但我對WPF這麼新,這只是一個猜測。 – ScottW
對不起,我的壞,沒有注意到更改通知。它對我來說很好,我唯一需要改變的就是將BlurRadius設置爲10,因爲1不夠。您正在指定一個密鑰,因此您需要將該樣式顯式應用於每個使用它的邊框,您是否可以將代碼顯示在哪裏? –