문제

inotifyPropertyChanged를 구현하는 클래스를위한 데이터 emplate이 있습니다. 속성이 변경 될 때 스토리 보드를 트리거하고 다른 값에 대한 다른 스토리 보드 (이 경우 bool)가 있습니까?

그리고 DataTemPlate을 위해 클래스의 값에 따라 시작시 스토리 보드를 트리거하는 방법이 있습니까?

도움이 되었습니까?

해결책

예, 그렇게 할 수 있습니다.

Datatrigger를 추가하고 해당 속성에 바인딩하십시오. 예는 다음과 같습니다.

<DataTemplate.Triggers>
    <DataTrigger Binding="{Binding Path=MyProperty}" Value="True">
        <BeginStoryboard Storyboard="{StaticResource myStoryboard}"/>
    </DataTrigger>
</DataTemplate.Triggers>

원하는대로 테스트 할 값을 설정할 수 있습니다. 따라서 값이 False로 변경 될 때 스토리 보드를 시작할 수 있습니다. 원하는만큼 Datatriggers (또는 다른 트리거)를 추가 할 수 있습니다.

내 예에서는 더미 속성과 스토리 보드를 참조하십시오.

속성이 변경되면 바인딩이 업데이트되고 데이터베이닝으로 인해 트리거가 발사됩니다.

이 기술은 스타트 업에서도 작동해야합니다.

다른 팁

위의 포스터와 마찬가지로 Datatrigger를 사용한 다음 ViewModel의 속성에 묶었습니다. 내가 혼란스럽게 찾은 것은 데이터 트리거를 어디에 두어야하는지였습니다. 루트 노드 (즉, 창)에 직접 넣습니다. 나는 나를 위해 태그 명명 세부 사항을 처리 한 Expression Blend를 사용하여 그것을 만들었습니다.

또한 프로젝트에 "Microsoft.expression.intercations"에 대한 참조를 포함시켜야합니다.

XAML : (이것은 루트 노드에 직접 이동합니다)

<Window
   xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
   xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions" 
   x:Name="window" >

    ...

    <i:Interaction.Triggers>
      <ei:DataTrigger Binding="{Binding FlashingBackground, Mode=OneWay}" Value="ON">
        <ei:ControlStoryboardAction Storyboard="{StaticResource MyAnimation}"     
                                                ControlStoryboardOption="Play"/>
      </ei:DataTrigger>
    </i:Interaction.Triggers>

    ...
</Window>

ViewModel :

 private void TurnOnFlashingBackround()
    {
        FlashingBackground = "ON";
    }

    private string _FlashingBackround = "OFF";

    public string FlashingBackground
    {
        get { return _FlashingBackround; }

        private set
        {
            if (FlashingBackground == value)
            {
                return;
            }

            _FlashingBackround = value;
            this.OnPropertyChanged("FlashingBackground");
        }
    }

    public new event PropertyChangedEventHandler PropertyChanged;

    private void OnPropertyChanged(string propertyName)
    {
        if (this.PropertyChanged != null)
        {
            this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }

마지막으로 뷰 모델은 "inotifypropertychanged"에서 상속해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top