2013-11-06 3 views
0

Что у меня есть: ресурс стиля, который содержит определения анимации и определение представления, viewmodel, который содержит данные, свойства и ICommands.Вызов анимации в представлении из viewmodel (WPF)

В настоящее время приложение может вызывать функции VM посредством нажатия кнопок (с помощью ICommand), просмотр со связыванием с VM Properties & позволяет запускать анимации из триггера button.click.

Что я ищу; Если стиль применяется к списку (например) Как я могу инициировать анимацию непосредственно из виртуальной машины? И.Е. если какое-либо свойство данных изменяется, можно ли запустить анимацию? Я знаю, что могу сделать это с помощью UserControl, но я пытаюсь разделить свою программу на более четко определенные виды и модели просмотра. Мне не нужен код в моем представлении, и я не хочу анимации в моей виртуальной машине.

+1

Добро пожаловать в переполнение стека! Похоже, вы хотите, чтобы мы написали вам код. Хотя многие пользователи готовы создавать код для кодера, терпящего бедствие, обычно помогают, когда плакат уже попытался решить проблему самостоятельно. Хорошим способом продемонстрировать это усилие является включение кода, который вы написали, пример ввода (если таковой имеется), ожидаемый вывод и вывод, который вы фактически получаете (вывод консоли, трассировки стека, ошибки компилятора - независимо от того, что применимо). Чем больше деталей вы предоставляете, тем больше ответов вы получите. Проверьте [FAQ] и [ask] –

+0

Это не mvvm. Просто выполняйте свой пользовательский интерфейс в коде. – Will

ответ

0

EDIT: На дальнейших исследований, я думаю, что вам нужно: WPF Command with Click Event Handler

Идея заключается в том, что вы должны вызвать ICommand в случае, позволяя дальнейшие подписки на события. Он по-прежнему кажется беспорядочным, поскольку он в значительной степени игнорирует стандартный синтаксис привязки команд, но он равен тому же, поскольку привязка команды все еще находится в представлении.

+0

Этот ответ должен был быть комментарием, хотя я не голосовал за вас. – Sheridan

+0

@Sheridan: Исправлено, с ответом, который действительно работает. Не понял, что ICommand остановил событие click. – Magus

+0

На этом сайте короткие ответы, такие как ваши, как правило, не являются предпочтительными. Как правило, предпочтительным является включение некоторых из связанных страниц (ов) в ответ для предоставления некоторого контекста. Дополнительную информацию см. В разделе «Предоставить контекст для ссылок» на страницах [Справочные страницы] (http://stackoverflow.com/help/how-to-answer). – Sheridan

3

Вы почти ответили на свой вопрос там, когда вы сказали, что способен запускать анимацию с помощью кнопки button.click event trigger. Фактический ответ да, то вы можете начать анимацию с помощью DataTrigger, что данные, связанный с вид модели собственности, или EventTrigger с помощью настраиваемого RoutedEvent таким же образом:

<Style> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding IsAnimationRunning}" Value="True"> 
      <DataTrigger.EnterActions> 
       <BeginStoryboard> 
        <Storyboard> 
         <SomeAnimation /> 
        </Storyboard> 
       </BeginStoryboard> 
      </DataTrigger.EnterActions> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 

Это запуска анимации всякий раз, когда IsAnimationRunning Недвижимость изменена с false по true.

Смежные вопросы