Trong ứng dụng của tôi, tôi có TreeView cho phép kéo/thả. Tôi có tất cả các chức năng làm việc tốt, tuy nhiên tôi gặp khó khăn làm nổi bật một TreeViewItem khi nó được kéo qua. Đây là phong cách của tôi cho mục treeview của tôi. Trình kích hoạt IsMouseOver không hoạt động khi đang kéo, vì việc kéo dường như chặn các sự kiện chuột khác. Bất cứ ai có thể giúp tôi kích hoạt các thay đổi biên giới tương tự trên mục treeview của tôi trong khi kéo?Tô sáng mục TreeView đang được kéo trên
<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>
Đó là một điều tuyệt vời, cảm ơn bạn rất nhiều! –
Đây chính xác là những gì tôi cần hôm nay. Cảm ơn Stefan rất nhiều! Trong treeview của tôi tôi nhận thấy mặc dù đôi khi nó sẽ không tự động loại bỏ các điểm nổi bật từ thả của tôi, vì vậy tôi đã đăng ký sự kiện thả và viết một hàm đơn giản mà đặt _dropPossible trở lại false và Invalidates IsPossibleDropTargetProperty. Có thể hữu ích cho người khác? – chocojosh
Công việc tuyệt vời! Một điều mà tôi thêm vào ngoài những gì #chocojosh thêm vào, đang nói cho TreeViewItem mở rộng nếu nó có các mục trên sự kiện OnDragEvent. Bạn có thể làm điều này bằng cách thêm: nếu (_currentItem.HasItems) _currentItem.IsExpanded = true; – Brent