내 응용 프로그램에는 끌어서 놓기를 허용하는 TreeView가 있습니다. 나는 모든 기능을 잘 작동하지만 TreeViewItem을 드래그 할 때이를 강조하는 데 어려움을 겪고 있습니다. 여기 내 treeview 항목에 대한 내 스타일입니다. 드래그하는 동안 다른 마우스 이벤트를 차단하는 것처럼 보이기 때문에 IsMouseOver 트리거는 드래그하는 동안 작동하지 않습니다. 누구든지 드래그하는 동안 내 treeview 항목에 동일한 테두리 변경 트리거 할 수 있습니까? 대신 IsMouseOver의 (아마도과의 dragEnter/DragLeave)하이라이트 TreeView 항목이 드래그되는 중
<Style x:Key="TreeViewItemStyle" TargetType="{x:Type TreeViewItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TreeViewItem}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition MinWidth="19" Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<ToggleButton
x:Name="PART_Expander"
Style="{StaticResource ExpandCollapseToggleStyle}"
IsChecked="{Binding Path=IsExpanded, RelativeSource={RelativeSource TemplatedParent}}"
ClickMode="Press"
/>
<Border
x:Name="OuterBorder"
Grid.Column="1"
SnapsToDevicePixels="True"
BorderThickness="1"
CornerRadius="3"
BorderBrush="Transparent"
Background="Transparent"
>
<Border
x:Name="InnerBorder"
SnapsToDevicePixels="True"
BorderThickness="1"
CornerRadius="2"
BorderBrush="Transparent"
Background="Transparent"
>
<ContentPresenter
x:Name="PART_Content"
ContentSource="Header"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
/>
</Border>
</Border>
<ItemsPresenter
x:Name="PART_ItemsHost"
Grid.Row="1"
Grid.Column="1"
Grid.ColumnSpan="2"
/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" SourceName="OuterBorder" Value="True">
<Setter TargetName="OuterBorder" Property="BorderBrush" Value="Blue" />
<Setter TargetName="OuterBorder" Property="Background" Value="Red" />
<Setter TargetName="InnerBorder" Property="BorderBrush" Value="White" />
</Trigger>
<MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
그것은 아름다운 것입니다, 정말 고마워요! –
이것은 정확히 내가 오늘날 필요로했던 것입니다. Stefan, 정말 고마워! 내 treeview에서 자동으로 내 방울에서 하이라이트를 제거하지 않을 것으로 나타 났으므로 드롭 이벤트를 등록하고 _dropPossible을 false로 다시 설정하고 IsPossibleDropTargetProperty를 무효화하는 간단한 함수를 작성했습니다. 아마 다른 사람에게 유용할까요? – chocojosh
위대한 작품! #chocojosh가 추가 된 것 외에 추가 한 한 가지는 OnDragEvent 이벤트에 항목이있는 경우 확장하도록 TreeViewItem에 지시하는 것입니다. 다음과 같이 추가하면됩니다. if (_currentItem.HasItems) _currentItem.IsExpanded = true; – Brent