2017-02-20 27 views
2

С Юбилейного обновлением (Build 14383/14393), вы должны быть в состоянии toggle the visibility of XAML elements без использования преобразователя, например:Изменения видимости с й: BIND не обновляется с MVVM

<TextBlock Text="I'm not visible!" Visibility="{x:Bind IsVisibleFalse}" /> 
<TextBlock Text="I'm visible!" Visibility="{x:Bind IsVisibleTrue}" /> 

Я попробовав это в моем проекте, минимальная целевая версия установлена ​​в Windows 10 Anniversary Edition. К сожалению, я не смог заставить его работать.

Этот код прекрасно работает:

<StackPanel Visibility="{x:Bind ViewModel.IsUnlocked, 
    Converter={StaticResource BoolToVisibilityConverter}, Mode=TwoWay}"> 

Это один не не (нет ошибки на компиляции, просто не отображается, когда булево значение изменения):

<StackPanel Visibility="{x:Bind ViewModel.IsUnlocked}> 

Я подозреваю, Mode = «TwoWay» - проблема, поскольку вы не можете установить ее «когда выражение привязки заканчивается приложением». Этот код не работает, а также:

<StackPanel Visibility="{x:Bind ViewModel.IsUnlocked, 
    Converter={StaticResource BoolToVisibilityConverter}> 

Так что мой вопрос: Могу ли я misssing что-то или это еще не работает в MVVM-сценарии и только с фоновым кодом?

ответ

2

по умолчанию Mode является OneTime, что делает ваш код не работает. Я предлагаю вам использовать OneWay, который следует использовать при литье.

+0

спасибо, я просто понял это. :-) – Thomas

+0

этот вопрос имеет более подробный ответ: http://stackoverflow.com/questions/33070705/with-compiled-bindings-xbind-why-do-i-have-to-call-bindings-update – Thomas

+0

@Thomas Какое совпадение для того же минутного ответа. –

0

Выключено x: Привязка по умолчанию Mode=OneTime - Я ошибочно думал, что это Mode=OneWay. Так это на самом деле работает:

<StackPanel Visibility="{x:Bind ViewModel.IsUnlocked, Mode=OneWay}>