2012-06-26 4 views
3

Я хочу, чтобы применить Storyboard к моему RectangleFill как это:Как применять раскадровки в стиле

<Rectangle Name="MyRectangle" 
    Width="100" 
    Height="100"> 
    <Rectangle.Fill> 
    <SolidColorBrush x:Name="MySolidColorBrush" Color="Blue" /> 
    </Rectangle.Fill> 
    <Rectangle.Triggers> 
    <EventTrigger RoutedEvent="Rectangle.MouseEnter"> 
     <BeginStoryboard> 
     <Storyboard> 
      <ColorAnimation 
      Storyboard.TargetName="MySolidColorBrush" 
      Storyboard.TargetProperty="Color" 
      From="Blue" To="Red" Duration="0:0:1" /> 
     </Storyboard> 
     </BeginStoryboard> 
    </EventTrigger> 
    </Rectangle.Triggers> 
</Rectangle> 

Но я хочу, чтобы вставить Storyboard в Style, я попытался это:

<Style xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:s="clr-namespace:System;assembly=mscorlib" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    TargetType="{x:Type Rectangle}"> 

<Style.Triggers> 

    <EventTrigger RoutedEvent="Shape.Loaded"> 
     <BeginStoryboard> 
      <Storyboard> 
       <ColorAnimation 
      Storyboard.TargetName="MySolidColorBrush" 
      Storyboard.TargetProperty="Color" 
      From="Blue" To="Red" Duration="0:0:1" /> 
      </Storyboard> 
     </BeginStoryboard> 
    </EventTrigger> 

</Style.Triggers> 

<Setter Property="Shape.Fill" Value="Blue" x:Name="MySolidColorBrush"/> 

</Style> 

С использованием этого кода:

var rect = new Rectangle(); 

using (FileStream stream = new FileStream("myStyle.xaml", FileMode.Open)) 
    rect.Style = XamlReader.Load(stream) as Style; 

Но это не работает и выдает исключение. Как мне изменить свой стиль?

+0

вы Обязаны ли использовать XamlReader и все эти вещи, чтобы сделать простой стиль? Я не уверен, но я думаю, что способ создания стиля немного необычен. – HichemSeeSharp

+0

@HichemC Я хочу иметь возможность установить стиль с использованием внешнего ресурса, т. Е. Я хочу, чтобы третья сторона могла выбрать стиль, есть ли у вас какие-то альтернативы? – Nick

+0

вы можете использовать проект библиотеки классов, добавьте туда словари ressource, а затем добавьте dll в свой текущий проект, чтобы вы могли использовать эти ресурсы через тег HichemSeeSharp

ответ

3

Изменить это в раскадровку

Storyboard.TargetProperty="Color" 

в

Storyboard.TargetProperty="Fill.Color" 

и удалить

Storyboard.TargetName="MySolidColorBrush" 
+0

Ваш ответ был полезен, потому что я просто изменяю 'Storyboard.TargetProperty =" Цвет "' с 'Storyboard.TargetProperty =" Fill.Color "' и удаляем 'Storyboard.TargetName =" MySolidColorBrush "', и он работает , Отредактируйте свой ответ, и я буду отмечать как принятый. – Nick

Смежные вопросы