2010-06-09 7 views
3

최대한 간단하게 만들려고합니다.스토리 보드에 'To'에 바인딩

나는이 작업을 수행 할 수 :

당신이에 바인딩을다시피
<Storyboard x:Name="MoveToLocation"> 
    <DoubleAnimation Duration="0:0:0.5" To="{Binding X}" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="grid" d:IsOptimized="True"/> 
</Storyboard> 

속성이 작동하지 않습니다 '에서'. 정적 값만 받아들이는 것 같습니다.

MVVM을 사용하여이 애니메이션을 만드는 방법은 무엇입니까? 나는 단지 정적 인 데이터를 넣을 수 없다. 왜냐하면 그것은 변화 할 것이기 때문이다.

감사합니다.

답변

4

DoubleAnimationFrameworkElement이 아니므로 바인딩도 그 중 하나에 작동하지 않습니다. 귀하의 이전 대답에 대한 내 대답을보십시오 question.

여기서 목표를 달성하려면 DataTemplate의 내용을 받아 UserControl으로 변환해야합니다. 그런 다음이 새 컨트롤은 바인딩해야하는 종속성 속성 집합 (예 : To 스토리 보드 값 포함)을 노출 할 수 있습니다.

+0

두 번째 단락은 제가 여러분에게 정교하게 다가 갈 필요가있는 것입니다. 나는 오늘 저녁 집에 갈 때 이것을 시험 할 것이다. 그래서 당신은 내가 xaml이 아닌 객체 자체 안에 Storyboard 인스턴스를 포함해야한다고 제안하고 있습니까? 좀 이상하게 보입니다.하지만 그렇게해야한다면, 제가 할 것입니다. – Peanut

+0

나는 아직도 조금 혼란 스러울 것 같다. 나는이 전체 '객체'를 usercontrol로 감싸고 'To'라는 내 자신의 Property를 만들 수있다. 그러나, 어딘가에, 나는 여전히 스토리 보드에 'To'속성을 설정 (다시 설정)해야합니다. 당신이 말했듯이 그것은 구속력이 없습니다. – Peanut

+0

@Peanut :이 특정 UI 동작을 캡슐화하기 위해 UserControl을 만든 후에는 "코드 숨김"으로 컨트롤을 직접 조작 할 수 있습니다. 때로는 바인딩 만이 대답이 아니므로 실제로 작업을 수행하는 코드를 작성해야합니다. – AnthonyWJones

0

스타일로 작업하려는 경우 효과가없는 것입니다. Silverlight는 해당 스타일의 모든 인스턴스에서 공유되므로이를 고정시킵니다.

요소 자체에 넣으십시오. 그러면 작동합니다.

+0

코드가 충분하지 않아 죄송합니다. 스타일이 아닙니다. 그러나 그것은 DataTemplate에 있습니다. (나는 움직일 필요가있는 객체의 인스턴스를 많이 가질 것입니다.) – Peanut