Не срабатывет DataTrigger

Вопросы и обсуждения по кросс-плфтформенной технологии Xamarin Forms
Ответить
murad.88
Сообщения: 2
Зарегистрирован: Вс июл 23, 2017 11:55 am

Вс июл 23, 2017 12:27 pm

Не срабатывает DataTrigger при конфигурации Release для UWP.
Если же компилю под Debug для UWP, то все нормально отрабатывает.

Для Android все работает и под Debug и под Release.

В Button отображает текст Suspended, но задний фон не меняется на зеленый.

Код: Выделить всё

 
<Button Text="{Binding Path=ContractStatus}">
    <Button.Style>
        <Style TargetType="Button">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=ContractStatus}" TargetType="Button" Value="Activate">
                    <Setter Property="BackgroundColor" Value="OrangeRed" />
                </DataTrigger>
                <DataTrigger Binding="{Binding Path=ContractStatus}" TargetType="Button" Value="Suspended">
                    <Setter Property="BackgroundColor" Value="GreenYellow" />
                </DataTrigger>
                <DataTrigger Binding="{Binding Path=ContractStatus}" TargetType="Button" Value="Unknown">
                    <Setter Property="BackgroundColor" Value="Gray" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>

Alsodan
Сообщения: 7
Зарегистрирован: Ср фев 01, 2017 11:32 am

Пн июл 24, 2017 6:37 am

Этот баг должны были исправить в релизе 2.3.5-pre6
Источник - https://bugzilla.xamarin.com/show_bug.cgi?id=56795
Может нужно обновить Xamarin.Forms?
Вот обсуждение пулл-реквеста https://github.com/xamarin/Xamarin.Forms/pull/1024

murad.88
Сообщения: 2
Зарегистрирован: Вс июл 23, 2017 11:55 am

Сб июл 29, 2017 8:42 am

Разобрался, дело было в .NET Native.
Эта известная проблема и она описана в документации

Для того чтоб заработал DataTrigger в UWP с включёным .NET Native, нужно заменить строчку кода в UWP.App.OnLaunched()

Код: Выделить всё

Xamarin.Forms.Forms.Init(e);
на

Код: Выделить всё

Xamarin.Forms.Forms.Init(e, new[] {typeof(Xamarin.Forms.Xaml.Extensions).GetTypeInfo().Assembly});
Использую Xamarin 4.5.0.486.

Ответить
  • Информация
  • Кто сейчас на конференции

    Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость