c# - 在 IsMouseOver 上触发内容更改
问题描述
我正在尝试将on属性集更改Content
为. 这是稍微缩短的代码:ContentControl
IsMouseOver
True
<ContentControl Margin="2 0 6 0" Width="20" Height="20">
<Image>
<Image.Source>
<DrawingImage >
<DrawingImage.Drawing>
<GeometryDrawing>
// drawing here
</GeometryDrawing>
</DrawingImage.Drawing>
</DrawingImage>
</Image.Source>
</Image>
<ContentControl.Style>
<Style>
<Style.Triggers>
<Trigger Property="UIElement.IsMouseOver" Value="True">
<Setter Property="ContentControl.Content">
<Setter.Value>
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" Stretch="Uniform">
// Canvas here
</Viewbox>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
使用 Snoop,我确实可以检查IsMouseOver
是否设置为 true,但Content
从未更改。我在这里想念什么?是否可以更改Content
使用ContentControl
触发器?
解决方案
您还需要ContentControl.Content
在样式设置器中设置。问题是样式的触发器的优先级低于显式分配的值。您明确设置内容(作为孩子),因此它会覆盖样式尝试在触发器中应用的任何更改。
例子:
<ContentControl Margin="2 0 6 0" Width="20" Height="20">
<ContentControl.Style>
<Style>
<Setter Property="ContentControl.Content">
<Setter.Value>
<TextBlock Text="Original"/>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="UIElement.IsMouseOver" Value="True">
<Setter Property="ContentControl.Content">
<Setter.Value>
<Viewbox Stretch="Uniform">
<TextBlock Text="Changed"/>
</Viewbox>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
推荐阅读
- python - Python 列表到 sqlite
- pandas - Pandas:将复数列转换为模数和参数列
- matplotlib - 每次我更改“figsize”时,大小都不会改变
- c - 如何不为空终止缓冲区?
- mysql - 连接两个表然后计算两列之间的时间差
- r - 将经度/纬度坐标转换为兰伯特等角圆锥投影
- android - 如何验证函数在 Runnable::run() 中被调用
- php - 使用高级自定义字段关系字段帖子类型修复 wordpress/elementor 的自定义查询
- reactjs - 解析错误:“导入”和“导出”可能只出现在顶层(反应)
- php - 如何解码可疑的 PHP 文件