如何在数据模板内的 MouseEnter 事件上设置属性
本文关键字:事件 MouseEnter 设置 属性 数据 | 更新日期: 2023-09-27 18:13:22
我想在StackPanel
上发生MouseEnter
事件时在DataContext
中设置CLR属性。但是,StackPanel
是在ItemsControl
的DataTemplate
内定义的,该在Generic.xaml
内自定义控件的控件模板中定义。
示例逻辑:
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type pie:PieChartControl}">
<Grid>
<ItemsControl
ItemsSource="{Binding slices, RelativeSource={RelativeSource TemplatedParent}}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<StackPanel>
<StackPanel.Triggers>
// Need help here...
<EventTrigger RoutedEvent="MouseEnter">
<Setter Property="MyProp" Value="myVal"/>
</EventTrigger>
</StackPanel.Triggers>
<Rectangle ... />
<TextBlock ... />
</StackPanel>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
编辑:寻找仅限 XAML 的解决方案。可以使用代码隐藏轻松完成!
您可以使用 IsMouseOver 属性作为样式触发器:
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="MyProp" Value="myVal" />
</Trigger>
</Style.Triggers/>
或者,如果你想做一些更复杂的事情,你可以在代码后面处理它
<EventSetter Event="MouseEnter" Handler="YourCodeBehindMethodHere"/>