2010-08-20 2 views
0

해결해야 할 다음과 같은 문제가 있습니다. xaml에 버튼으로 작동하는 타원이 있고 그 중 일부는 클릭하면 2 개의 새 버튼으로 열릴 수 있습니다. 저는이 버튼들을 불투명도 0으로 이미 생성 된 방식으로 분리 된 캔버스에 넣었습니다. 원하는 것은 트랜지션에서 부모 버튼을 클릭 할 때이 버튼 불투명도를 1로 설정하는 효과를 갖는 것입니다. 어떻게하면 될까요?Silverlight에서 타원을 기반으로 변경 단추를 만드는 방법은 무엇입니까?

내가 지금하고 있어요 방법,하지만 내가 원하는대로 작동하지 않는 C#을

 private void ExpandHarborButtons(object sender, MouseButtonEventArgs e) 
     { 
      Ellipse thisPath = (Ellipse)sender; 
      String test = (String)thisPath.DataContext; 
      for(int i = 0; i < DoubleHarbors.Children.Count; i++) 
      { 

       Ellipse button = (Ellipse)VisualTreeHelper.GetChild(DoubleHarbors, i); 

       if (test.Contains((String)button.DataContext)) 
       { 
        button.Opacity = 1; 
       } 
      } 
     } 

. 단추는 보여 주지만 전에 말한 효과는 아닙니다.

답변

4

DoubleAnimation을 만들고 클릭하여 시작하십시오. 이런 식으로 뭔가 : 코드에서 다음

<Storyboard x:Name="fadeIn"> 
    <DoubleAnimation Storyboard.TargetName="ButtonName" From="0.0" To="0.1" Duration="0:0:0.5" 
       Soryboard.TargetProperty="Opacity"/> 
</Storyboard> 

는 :

fadeIn.Begin();

--EDIT--

다음은 C#으로 애니메이션을 수행하는 방법이다. 실제로 XAML에서 정의하는 것이 더 쉽지만 실제로 이것이 원하는 경우 XAML을 수행하는 방법입니다.

 Storyboard sb = new Storyboard(); 
     DoubleAnimation da = new DoubleAnimation(); 
     da.From = 0; 
     da.To = 1.0; 
     da.Duration = new Duration(new TimeSpan(0, 0, 0, 0, 500)); 

     sb.Children.Add(da); 

     Storyboard.SetTarget(sb, sender as Button); 
     Storyboard.SetTargetProperty(Button1, new PropertyPath("Opacity")); 

     sb.Begin(); 
+0

이 파일을 cs 파일에 만들 수 있습니까? 당신이 보여준 방식으로, 버튼에 대한 스토리 보드를 만들어야합니까? –

+0

CS 파일에 애니메이션을 만들 수 있습니다. 아키텍처 관점에서 볼 때 반드시 그런 것은 아니지만 기술적으로는 작동합니다. 나는 내 대답을 편집 할 것입니다. – Robaticus

관련 문제