我有一個用戶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