2014-12-18 2 views
0

В моем XAML я получил Style я использую для подключения к динамически создаваемых Path объектов:Как разморозить/предотвратить зависание свойства динамического созданного объекта со стилем?

<Style x:Key="styleBladePiece" TargetType="{x:Type Path}"> 
     <Setter Property="Data" Value="..." /> 
     <Setter Property="Fill"> 
      <Setter.Value> 
       <SolidColorBrush Color="{StaticResource BladeFillColor1}" /> 
      </Setter.Value> 
     </Setter> 
    </Style> 

В моем коде позади я создаю много из них так:

Path pathBladePiece = new Path(); 
    pathBladePiece.Style = (Style)this.FindResource("styleBladePiece"); 

Теперь на потом шаг я пытаюсь оживить Color в Fill свойства Path объекта, например, так:

ColorAnimation a = new ColorAnimation(); 
    a.Duration = new Duration(new TimeSpan(0, 0, 0, 0, 400)); 
    a.To = (Color)this.FindResource("BladeFillColor2"); 
    pathBladePiece.Fill.BeginAnimation(SolidColorBrush.ColorProperty, a); 

Но оказывается, что свойство Fill заморожено до этого времени. В конструкторе, а также во время выполнения я получаю: InvalidOperationException: property "Color" on "System.Windows.Media.SolidColorBrush" can not be animated, because the object is sealed or locked.

При отладке XDecProc.exe: A first chance exception of type 'Microsoft.Expression.Markup.DocumentModel.StatePersistingException' occurred in Microsoft.Expression.DesignSurface.dll" when debugging the designer.

Могу ли я разморозить или предотвратить его замораживать?

ответ

0

Попробуйте использовать Shared="False" из MSDN

Другой сценарий для х: Shared = «ложь», если вы используете Freezable ресурс для значений анимации, но хотите изменить ресурс на на анимационной основе

Определить SolidBrush как ресурс

<SolidColorBrush x:Key="BladeFillBrush1" x:Shared="False" Color="{StaticResource BladeFillColor1}"/> 

, а затем

<Style x:Key="styleBladePiece" TargetType="{x:Type Path}"> 
    <Setter Property="Fill" Value="{StaticResource BladeFillBrush1}"> 
</Style> 
+0

Не работает, и объект все еще заморожен. – modiX

+0

Мой плохой, не для стиля, а для 'BladeFillColor1'. – Sinatr

+0

Итак, я попробовал ' # FF767676' в моих ресурсах или ' 'на моем контроле XAML. Первый сохраняет проблему, второй - исключение синтаксиса XAML. – modiX

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