2017-01-17 9 views
0

Я не знаю, почему они решили установить значение по умолчанию для Mode в OneTime Но это не то, что я хочу большую часть времени. Он потратил весь мой день на отладку.Как изменить режим по умолчанию x: Привязать?

Есть ли способ установить OneWay значение по умолчанию для Mode из x:Bind?

<!--This will not listen to future changes. it is OneTime by default--> 
<TextBlock Text="{x:Bind Name}"/> 

<!--We have to explicitly define Mode value--> 
<TextBlock Text="{x:Bind Name, Mode=OneWay}"/> 

ответ

5

TL: DR: Невозможно изменить режим привязки на встроенных элементах управления.

x:Bind вместе с несколькими другими расширениями разметки, как x:Phase были добавлены для увеличения производительности . Имейте в виду, что приложения UWP могут работать на настольных компьютерах, но также и на самых маленьких устройствах IoT, поэтому производительность является ключевой.

Прежде всего, x:Bind является скомпилированным связыванием. Во время компиляции XAML преобразуется в строго типизированный код позади, что быстрее, чем проверка объекта времени исполнения, используемая {Binding}.

Во-вторых, он оптимизирован для работы сам по себе, используя привязку OneTime. OneWay и TwoWay Для привязки требуется инфраструктура для просмотра и отбрасывания изменений.

Объект привязки может быть настроен для наблюдения за изменением значения свойства источника данных и обновления на основе этих изменений. Он также может быть настроен на то, чтобы вносить изменения в свое значение обратно в исходное свойство.

В прошлом все раньше было OneWay с {Binding}, что предполагает небольшой удар по производительности на каждом поле, даже те, которые должны были быть связаны только один раз (из-за чего бы вы потрудились изменения в OneTime, если он просто работает) , Теперь вы вынуждены думать, какие поля должны обновляться и, следовательно, использовать больше ресурсов.

Дополнительная информация о x: привязка к MSDN.

+0

Спасибо, разумно – Blendester

0

Я думаю, что это по дизайну. Если вы хотите использовать OneWay как значение по умолчанию. Вы можете использовать Binding

На данный момент привязка должна быть прочнее X:Bind.

Расширение разметки {x: Bind} - новое для Windows 10 - является альтернативой {Binding}. {x: Bind} не хватает некоторых функций {Binding}, но работает меньше времени и меньше памяти, чем {Binding} и поддерживает лучшую отладку.