我有一个用户cotrol,它包含一个包含一个椭圆和一个viewbox的画布。椭圆是背景,并且视图框在运行时用从另一个程序集加载的图形填充。我在为控件创建一个“热”行为时遇到了问题,因此当鼠标移动到其上时,椭圆会改变颜色。在父元素的触发器上设置子元素的属性
如果我在椭圆上放置了一个触发器,那么颜色会发生变化,但当鼠标移过视图框中的图形时,它会变回,因为视框不是椭圆的子节点。
从我读过的,应该可以从父元素上的触发器设置子元素的属性。但是,我无法得到这个工作。我的代码如下所示:
<Viewbox Margin="5" >
<Viewbox.Resources>
<SolidColorBrush x:Key="HotColor" Color="Blue"/>
<SolidColorBrush x:Key="ColdColor" Color="Red"/>
<Style TargetType="Canvas" x:Key="BackgroundStyle">
<Setter Property="Ellipse.Fill" Value="{StaticResource ColdColor}"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Ellipse.Fill" Value="{StaticResource HotColor}"/>
</Trigger>
</Style.Triggers>
</Style>
</Viewbox.Resources>
<Canvas Width="44.000" Height="44.000" Style="{StaticResource BackgroundStyle}">
<Ellipse Width="44" Height="44"/>
<Viewbox Name="ButtonGraphics"/>
</Canvas>
</Viewbox>
结果是我的椭圆上根本没有颜色。有趣的是,如果我尝试设置Ellipse.Opacity,它会起作用,但会影响椭圆和图形!所以它看起来像被应用到画布上,而不是椭圆?
感谢您的解释!这只是我WPF编码的第二周,所以还有很多东西需要学习。这是否意味着在触发器中设置子元素的属性是不可能的? – NPVN 2010-11-23 19:51:50