2016-10-18 1 views
0

변경 불가능한 개체 인스턴스에서 Foreground.Color를 애니메이션으로 만들 수 없습니다.immutable 개체 인스턴스에서 'Foreground.Color'에 애니메이션을 적용 할 수 없습니다.

private void AnimColor() 
    { 
     int counter = 0; 
     Storyboard mystoryboard = new Storyboard(); 
     foreach (char letter in txtSend.Text) 
     { 
      Run newLetter = new Run(letter.ToString()); 
      newLetter.Name = "letter_" + counter.ToString(); 
      textblock1.Inlines.Add(newLetter); 
      counter++; 
      ColorAnimation k = new ColorAnimation(); 
      //MessageBox.Show(letter.Name); 
      Storyboard.SetTarget(k, newLetter); 
      Storyboard.SetTargetProperty(k, new PropertyPath("Foreground.Color")); 
      k.From = Colors.Red; 
      k.To = Colors.Blue; 
      k.Duration = TimeSpan.FromSeconds(0.5); 
      k.BeginTime = TimeSpan.FromSeconds(0.5 * counter); 
      mystoryboard.Children.Add(k); 
     } 
     try 
     { 
      mystoryboard.Begin(this); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 

동적 컨트롤에 동적 애니메이션을 추가하는 방법을 정확히 모르겠습니다.

+0

전에, 당신이 newLetter.Foreground = 새로운 SolidColorBrush'처럼 실행에 (변경 가능) 브러쉬를 할당해야합니다 (Colors.Red를) ; ' – Clemens

+0

고맙습니다.이 말이 맞습니다. 나는 그것이 기본 색상의 검정색이라고 가정했다. –

+0

당신은 기본 검정색을 가지고 있지만, (오류 메시지가 말하는 것처럼) 브러쉬는 변경할 수 없다. – Clemens

답변

1

애니메이션 가능하게하려면 실행의 Foreground Brush가 변경 가능해야하며 기본값은 그렇지 않습니다.

당신은 애니메이션을하기 전에 새로운 SolidColorBrush를 지정해야합니다 :

이 전경 색을 애니메이션에
newLetter.Foreground = new SolidColorBrush(Colors.Black); 
관련 문제