Мне нужно отобразить какую-то анимацию, когда запускаются разные процессы.Моя первоначальная идея состояла в том, чтобы просто добавить некоторые теги <ContentControl>
в XAML и связать их со свойством в объекте модели представления, которое затем просто присвоило этому свойству ProgressBar
, некоторый занятый счетчик или что-то еще.
Это работает, но мне это не нравится.Основная причина, по которой мне это не нравится, заключается в том, что модель представления не должна вовлекать себя в вопросы представления, и этот шаблон явно нарушает эту парадигму.
Это в значительной степени то, как мой (уродливый) код выглядит как atm:
XAML:
<ContentControl Content="{Binding ProcessAAnimation}" />
В классе View Model:
public object ProcessAAnimation
{
get { return _processAAnimation; }
private set
{
_processAAnimation = value;
OnPropertyChanged("ProcessAAnimation");
}
}
public object IsProcessARunning
{
get { return _processARunning; }
private set
{
if (value == _processARunning)
return;
_processRunnings = value;
if (value)
ProcessAAnimation = SomeNiftyAnimationControl();
else
{
if (ProcessAAnimation is IDisposable)
((IDisposable)ProcessAAnimation).Dispose();
ProcessAAnimation = null;
}
}
}
// (clipped: More properties for "Process B", "Process C" and so on)
Итак, есть лучший шаблон для достижения этой цели.Предпочтительно шаблон, в котором я могу динамически создавать свои элементы управления анимацией, используя только XAML?
Обратите внимание, что я уже протестировал решение, в котором я объявляю три различных элемента управления анимацией, а затем связываю их свойство Visibility
с моделью представления.государство.Это, однако, ниже номинала в моей книге, потому что я не хочу просто скрывать элементы управления, я хочу, чтобы они исчезли без необходимости.Кроме того, это также сделало бы невозможным динамическое использование различных типов анимации для любых потребностей.
Кто-нибудь?