같은 문제가 발생했는데 애니메이션이 코드에 포함되어있어 그 중 일부는 실제로 도움이되지 않았습니다. 그 중 일부는 크고 복잡하며 가변적 인 변수가 필요했기 때문에 코드에 머물러 있어야했습니다. 애니메이션을 트리거하는 사용자 정의 컨트롤 (뷰)에 종속성 속성을 추가하고이를 뷰 모델의 속성에 바인딩하여 해결했습니다. 이것이 잘 작동하기 때문에 이것이 무엇인가를 위반하는지 알지 못한다. 환호, stepp
발췌 : 뒤에
(보기)에서 UserControl 코드 :
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
SetAnimationBindings();
}
private void SetAnimationBindings()
{
_dialogStartPosition = mbFolderBrowse.Margin;
var propName = "StartDialogAnimation";
var binding = new Binding(propName) { Mode = BindingMode.TwoWay };
this.SetBinding(DialogAnimationProperty, binding);
propName = "StartProgressAnimation";
binding = new Binding(propName) { Mode = BindingMode.TwoWay };
this.SetBinding(ProgressAnimationProperty, binding);
}
#region Animation Properties
#region DialogAnimation
public static readonly DependencyProperty DialogAnimationProperty =
DependencyProperty.Register("DialogAnimation", typeof(bool),
typeof(Manage), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, OnDialogAnimationChanged));
public bool DialogAnimation
{
get { return (bool)this.GetValue(DialogAnimationProperty); }
set
{
var oldValue = (bool)this.GetValue(DialogAnimationProperty);
if (oldValue != value) this.SetValue(DialogAnimationProperty, value);
}
}
private static void OnDialogAnimationChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
{
Manage m = o as Manage;
if ((bool)e.NewValue == true)
m.SlideInDialogPanel(); // animations
else
m.SlideOutDialogPanel();
}
#endregion
보기 - 모델 :
public bool StartDialogAnimation
{
get { return _startDialogAnimation; }
set
{
if (_startDialogAnimation != value)
{
_startDialogAnimation = value;
RaisePropertyChanged("StartDialogAnimation");
}
}
}
출처
2013-11-26 18:03:35
JGU
내가 그렇게하는 방법을 알고있다. 조건을 입력 할 때 스토리 보드를 시작하는 트리거를 설정합니다. 하지만 일회성 애니메이션 만하면됩니다. UI 요소에 신속하고 일시적인 플래시를 적용하여 관심을 끌고 싶습니다. – RandomEngy
일반화를 고려하지 않았으므로 이것이 도움이되는지 잘 모르겠습니다. 한 때 비슷한 필요성이있었습니다. 1 분 동안 아무런 활동이 없다면 버튼을 '깜박'시켜야했습니다. 나는 스토리 보드를 버튼에 붙임으로써 스토리 보드가 아무 것도하지 않을 것이고 플래시를 할 것이다. 제 경우에는 버튼을 클릭하면 사라져 시나리오가 더 단순 해졌습니다. 관심을 끌기위한 UI 요소의 플래시는 뷰와 관련된 것처럼 들립니다. 보기만으로 플래시를 실행할시기를 결정할 수있는 방법이 있습니까? VM이 UI 요소를 깜박 거리는 이유는 무엇입니까? 죄송합니다. 많은 도움이되지 않을 수 있습니다. – Carlos
음, 한 창에서 실행되는 여러 명령이 다른 창에서이 플래시를 트리거합니다. 내 윈도우 모델은 VM이 창 간의 관계를 알고 있지만 뷰는 그렇지 못하도록 설정되어 있습니다. – RandomEngy