2014-05-15 216 views
0

访问母公司的名称范围在XAML中,我有这样的代码:从孩子

<Style TargetType="Button"> 
    <Setter Property="Foreground" Value="#c10000" x:Name="TextColor"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="Button"> 
       <Border x:Name="RootElement" CornerRadius="8"> 

        <VisualStateManager.VisualStateGroups> 
         <VisualStateGroup x:Name="CommonStates"> 

          <VisualState x:Name="MouseOver"> 
           <Storyboard> 
            <ColorAnimation Storyboard.TargetName="TextColor" 
              Storyboard.TargetProperty="Foreground" To="#FF8D00" /> 
           </Storyboard> 
          </VisualState> 
         </VisualStateGroup> 
        </VisualStateManager.VisualStateGroups> 
       </Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

此代码失败,提示信息说,“TEXTCOLOR”在边境的名称范围没有被发现。如何访问TextColor定义的名称范围呢? ColorAniamtion应该使用前景属性访问setter并更改颜色。

回答

0

动画按钮的Foreground属性,而不是动画Setter。由于Foreground酒店类型Brush而不是Color,我使用的是对象的动画,而不是在下面的示例代码的彩色动画:

<Button.Style> 
    <Style TargetType="Button"> 
     <Setter Property="Foreground" Value="#c10000"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="Button"> 
        <Border x:Name="RootElement" CornerRadius="8"> 
         <ContentPresenter/> 
         <VisualStateManager.VisualStateGroups> 
          <VisualStateGroup x:Name="CommonStates"> 
           <VisualState x:Name="MouseOver"> 
            <Storyboard> 
             <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Button.Foreground)"> 
              <ObjectAnimationUsingKeyFrames.KeyFrames> 
               <DiscreteObjectKeyFrame KeyTime="0:0:0"> 
                <DiscreteObjectKeyFrame.Value> 
                 <SolidColorBrush Color="#FF8D00"/> 
                </DiscreteObjectKeyFrame.Value> 
               </DiscreteObjectKeyFrame> 
              </ObjectAnimationUsingKeyFrames.KeyFrames> 
             </ObjectAnimationUsingKeyFrames> 
            </Storyboard> 
           </VisualState> 
          </VisualStateGroup> 
         </VisualStateManager.VisualStateGroups> 
        </Border> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</Button.Style> 
+0

这工作,但有可能增加持续时间也不知何故?所以颜色会在1秒内逐渐改变? – user3595338

+0

不,对于对象动画,您不能执行渐变颜色更改。 –