2014-03-25 96 views
0

在一个给定的XAML中,有一个部分:如何指定属性路径?

<ColorAnimation Storyboard.TargetProperty="Background.(SolidColorBrush.Color)" To="Black" Duration="0:0:3"/> 

如果我只指定"Background",那么这是行不通的。为什么?我在哪里可以获得关于制作路径的一些信息?

PS:我看到一些很疯狂的路径,像"(blablabla).(blablabla).(blablabla.blablabla)",这让我很紧张,因为我无法找到是什么意思...容易

+1

'Background'属于'Brush'类型,这是'ColorAnimation',可以为由'SolidColorBrush'发布的'Color'生成动画。对于规则检查['PropertyPath XAML语法'](http://msdn.microsoft.com/en-us/library/ms742451(v = vs.110).aspx) – dkozl

+0

@dkozl,它仍然不是很清楚如何形成路径。例如,''“Background.Color”'在我的情况下工作。但是,这个'方括号内的SolidColorBrush'部分看起来像是类型转换,给出的描述(在链接中)非常差,有限,我觉得它是不完整的。你知道更好的吗? – Sinatr

+1

是的,'SolidColorBrush'的'Background.Color'也可以。如果没有'Color'属性只是'Background。(SolidColorBrush.Color)'''期望它是'SolidColorBrush',那么两种情况都会失败,其中'Background.Color'将满足于任何'Color'属性,所以如果你需要另一个'刷'类型'颜色'属性它也可以工作 – dkozl

回答

2

如果只Background,因为它不工作故事板会动画一种颜​​色,并且此颜色是Background属性的Color属性。

Background是一个画笔,所以它可以包含任何类型的画笔。为了访问Color,画笔需要转换为SolidColorBrush

这基本上是表达Background.(SolidColorBrush.Color)所做的。它将Background转换为SolidColorBrush,然后从中访问Color属性。

在C#代码,你会写

 ((SolidColorBrush)Background).Color = someColor; 
+0

我没有注意到它是'刷子'。谢谢。剩下的唯一问题是语法。我期望像'“((SolidColorBrush)Background).Color”',但在xaml中显示为'Background。(SolidColorBrush.Color)'。你知道这个有什么参考吗? 'type conversion xaml'在google中给出'TypeConverters'作为结果。 – Sinatr

+0

发现我自己。它被称为“类型合格的属性”。 – Sinatr

1

试试这个

例1

<Button> 
     <Button.Triggers> 
      <EventTrigger RoutedEvent="Loaded"> 
       <BeginStoryboard> 
        <Storyboard> 
         <ColorAnimation Storyboard.TargetProperty="Background.Color" From="Transparent" To="Red" Duration="0:0:0.1"></ColorAnimation> 
        </Storyboard> 
       </BeginStoryboard> 
      </EventTrigger> 
     </Button.Triggers> 
    </Button> 

例题

<Grid> 
     <Button x:Name="Button"></Button> 
     <Grid.Triggers> 
      <EventTrigger RoutedEvent="Loaded"> 
       <BeginStoryboard> 
        <Storyboard> 
         <ColorAnimation Storyboard.TargetName="Button" Storyboard.TargetProperty="Background.Color" From="Transparent" To="Green" Duration="0:0:0.1"></ColorAnimation> 
        </Storyboard> 
       </BeginStoryboard> 
      </EventTrigger> 
     </Grid.Triggers>     
    </Grid> 
+0

'“Background.Color”'也可以,谢谢。 – Sinatr