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