2015-07-30 2 views
2

Я пытаюсь написать VisualState для моего нового универсального приложения под Windows, 10.
Согласно документации о VisualState.StateTriggers, вы можете добавить несколько триггеров для визуального состояния, как свойство имеет тип IList<StateTriggerBase>.Multiple VisualState Триггеры для одного визуального состояния

Документация VisualState класс также указывает на документацию StateTriggers:

oneOrMoreTriggers

один или несколько триггеров, которые могут быть AdaptiveTrigger или пользовательский триггер, полученный из StateTriggerBase. Они могут использоваться, чтобы указать, когда соответствующий VisualState должен применяться автоматически без явного вызова GoToState. Дополнительные сведения см. В разделе «Свойство StateTriggers».

Однако в документации не указано, как работают несколько триггеров. Также нет способа изменить поведение с помощью любого кода на C#.
Для желаемого поведения потребуется несколько условий AND/OR для этих триггеров, указанных в разделе StateTriggers.

Есть ли другой способ, чем писать собственный "MultiTrigger", исходя из StateTriggerBase?

ответ

4

Хорошо. Поскольку нет MultiTrigger, я написал свой собственный MultiTrigger. Множественные триггерные опоры AND и OR условиях, которые мне нужны.

Теперь он включен в пакет NuGet AdaptiveTriggerLibrary.

+0

Я установил AdaptiveTriggerLibrary в моем проекте UWP (построен для RS1), и я пытаюсь получить два MultiTriggers с AndModifier, работающим с WindowHeightTrigger и WindowWidthTrigger, но кажется, что первый MultiTrigger всегда активен второй, независимо от того, что я делаю. У вас есть электронная почта для поддержки этой библиотеки, где я могу получить некоторую помощь? Благодаря! – Sergio0694

+0

@ Sergio0694 Не стесняйтесь открывать проблему на GitHub: https://github.com/Herdo/AdaptiveTriggerLibrary - я рассмотрю ее как можно скорее. – Herdo

-2

Попробуйте использовать отдельные VisualStateGroups. Например, для обработки различной ширины и ориентации используют 2 VisualStateGroups

<VisualStateGroups x:Name="WidthStates"> 
    ... 
</VisualStateGroups> 

<VisualStateGroups x:Name="OrientationStates"> 
    ... 
</VisualStateGroups> 

просмотреть это связанный с ним вопрос о MSDN:

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/95291be1-25c7-4310-bb2b-b8fcead3b4d9/multiple-statetriggers-supporting-narrow-and-landscape

-1

Herdo, То, что я наблюдал в StateTriggers поведения является то, что, когда спусковые находятся в одной группе, они выполняются по-разному, по порядку, вроде режима AND. AND триггеры разных VisualStateGroups выполняют самостоятельно, сорт OR. В этом наблюдаемом поведении я организую вещи, которые изменяют один и тот же набор свойств в одну и ту же группу, так что условие контролируется внутри группы.

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