Как удалить привязку из BindableProperty через DataTrigger в Xamarin.Forms (XAML) - PullRequest
0 голосов
/ 23 ноября 2018

Поскольку можно добавить Binding для BindableProperty через DataBinding, также должна быть возможность удалить Binding из BindableProperty через DataTrigger?

<Style TargetType="Label" x:Key="MyStyle">
    <Style.Triggers>
        <DataTrigger TargetType="Label" Binding="{Binding Source={x:Reference mySwitch}, Path=IsToggled}" Value="True">
            <Setter Property="Text">
                <Setter.Value>
                    <Binding Path="Name" />
                </Setter.Value>
            </Setter>
        </DataTrigger>
        <DataTrigger TargetType="Label" Binding="{Binding Source={x:Reference mySwitch}, Path=IsToggled}" Value="False">
            <Setter Property="Text">
                <Setter.Value>
                    <!--The Binding removal should occur here-->
                </Setter.Value>
            </Setter>
        </DataTrigger>
    </Style.Triggers>
</Style>

Конечно, я говорю об удаленииот уровня стиля в XAML, а не от уровня кода.На уровне кода мы можем сделать BindableObject.RemoveBinding , но как это сделать в XAML?

1 Ответ

0 голосов
/ 23 ноября 2018

Вы можете использовать Path="null", но я проверил, когда он загружается в первый раз IsToggled=True Я вижу, что текст установлен, когда я меняю, т.е. IsToggled=False переключатель, текст пустой.Это то, что ожидается от вашего вопроса.

Однако, когда я снова переключаю переключатель IsToggled=True, я не вижу текст с привязкой Name однако.

Не похожеесть XAML, который в точности эквивалентен BindableObject.RemoveBinding Я думаю, что хорошей ставкой было бы полагаться на код C # для того же.

Обновление:

Еще один триггер, когда IsToggled=false это не требуется вообще.Просто удали это.Первый триггер активируется и связывается только тогда, когда IsToggled=True, когда его ложное Binding само удалено.

    <ResourceDictionary>
        <Style TargetType="Label"
               x:Key="MyStyle">
            <Style.Triggers>
                <DataTrigger TargetType="Label"
                             Binding="{Binding Source={x:Reference mySwitch}, Path=IsToggled,Mode=TwoWay}"
                             Value="True">
                    <Setter Property="Text">
                        <Setter.Value>
                            <Binding Path="FirstName" />
                        </Setter.Value>
                    </Setter>
                </DataTrigger>
             <!-- end of all triggers -->
            </Style.Triggers>
          <!-- end of style -->
        </Style>
    </ResourceDictionary>

IsToggeled=true IsToggeled=true

IsToggeled=false IsToggeled=false

Я проверил это, и оно работает.Надеюсь, это то, что вы ищете.

testing

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...