0
我有依賴項屬性的問題。我一直在尋找「如何」,但迄今爲止沒有任何東西可以幫助我。依賴屬性does not trigger
我需要一個網格來改變它的背景顏色,當我把東西拖進去。這是我到目前爲止的代碼:
VB
Friend Shared ReadOnly isDragOverPropertyKey As DependencyPropertyKey = DependencyProperty.RegisterReadOnly("isDragOver", GetType(Boolean), _
GetType(ucPageControl), _
New PropertyMetadata(False))
Public Shared ReadOnly isDragOverProperty As DependencyProperty = isDragOverPropertyKey.DependencyProperty
Private _isDragOver As Boolean = True
Public Property isDragOver() As Boolean
Get
Return CBool(GetValue(isDragOverProperty))
End Get
Set(ByVal value As Boolean)
SetValue(isDragOverProperty, value)
End Set
End Property
Private Sub Grid_DragEnter(sender As Object, e As Windows.DragEventArgs)
isDragOver = True
End Sub
Private Sub Grid_DragLeave(sender As Object, e As Windows.DragEventArgs)
isDragOver = False
End Sub
XAML
<Grid Margin="0,0,216,63" DragEnter="Grid_DragEnter" DragLeave="Grid_DragLeave" MouseEnter="Grid_MouseEnter_1" MouseLeave="Grid_MouseLeave_1" AllowDrop="True" >
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.Style>
<Style TargetType="Grid">
<Style.Triggers>
<Trigger Property="Elements:ucPageControl.isDragOver" Value="False">
<Setter Property="Background" Value="White"></Setter>
</Trigger>
<Trigger Property="Elements:ucPageControl.isDragOver" Value="True">
<Setter Property="Background" Value="Black"></Setter>
</Trigger>
</Style.Triggers>
</Style>
</Grid.Style>
</Grid>
不知怎的,我的網格犯規實現時,我的財產變化。任何人在這裏幫忙?
您不應該使用只讀'isDragOverProperty'來調用SetValue。改爲嘗試'SetValue(isDragOverPropertyKey,value)'。除此之外,刪除私人'_isDragOver'字段。它沒有被使用。 – Clemens
你的解決方案不能像你期望的那樣工作的原因是你的屬性設置在你的(大概是)'UserControl'(它被定義的類)上,但你的觸發器期望它被設置在'Grid '(從未發生過)。您可能需要考慮使用[附加的依賴項屬性](https://msdn.microsoft.com/en-us/library/ms749011(v = vs.110).aspx),而不是普通的。否則,你應該使用'DataTrigger'而不是'Trigger'。 – Grx70