c# - WPF ControlTemplate - 为椭圆触发不同的背景颜色
问题描述
我正在学习使用 WPF,但遇到了问题。我正在创建一个自定义按钮,当我将鼠标悬停在它上面时应该会改变背景颜色。此时我有以下代码:
<ControlTemplate x:Key="myButtonTemplate" TargetType="{x:Type Button}">
<Grid>
<Ellipse x:Name="outerElipse" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
<Ellipse.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="Green" Offset="0"/>
<GradientStop Color="Purple" Offset="1"/>
</LinearGradientBrush>
</Ellipse.Fill>
</Ellipse>
<Ellipse VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="20">
<Ellipse.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="LightBlue" Offset="0"/>
<GradientStop Color="Blue" Offset="1"/>
</LinearGradientBrush>
</Ellipse.Fill>
</Ellipse>
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" TextBlock.Foreground="White"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Fill" Value="Black"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
问题是我不知道在第一个(外)椭圆上触发它的热度。以下行还给出了错误“无法识别或无法访问成员“填充”:
<Setter Property="Fill" Value="Black"/>
解决方案
将外部椭圆的名称分配给 Setter 的 TargetName 属性。
前任:
<Setter Property="Fill" Value="Black" TargetName="outerElipse"/>
推荐阅读
- c# - Oracle Provider for .NET 不会使用实体框架在实体/表中找到新添加的字段/列(抛出 ORA-00904)
- raspberry-pi - ARM 处理器如何使用超过 4GB 的内存?
- xamarin - Xamarin forms ios - b2c 身份验证在模拟器中有效,但在设备中无效
- fiware - fiwarequantumleap 插入 cratedb 不起作用(缺少架构)
- javascript - 在 react 中跟踪 children prop 的值或事件变化
- javascript - 根据图像文件的实际高度和宽度(React)为图像动态跨越网格行和列
- clickhouse - 我应该使用哪些数据类型将 Jaeger 日志从 Kafka 读取到 Clickhouse?
- javascript - 如何通过与地图元素比较来创建新字符串?
- python - Qiskit:如何在量子电路中为每个镜头使用不同的状态?
- django - Django postgresql postgis不正确的空间查找