uwp
Связывание vs x: Bind
Поиск…
Синтаксис
<object property = "{x: Bind}" ... />
<object property = "{x: Bind propertyPath}" ... />
<object property = "{x: Bind Path = propertyPath}" ... />
<object property = "{x: Bind [bindingProperties]}" ... />
<object property = "{x: Bind propertyPath, [bindingProperties]}" ... />
<object property = "{x: Bind Path = propertyPath, [bindingProperties]}" ... />
замечания
Расширение разметки {x:Bind}
- новое для Windows 10 - является альтернативой {Binding}
.
{x:Bind}
не хватает некоторых функций {Binding}
, но работает меньше времени и меньше памяти, чем {Binding}
и поддерживает лучшую отладку.
При времени загрузки XAML {x:Bind}
преобразуется в то, что вы можете рассматривать как объект привязки, и этот объект получает значение из свойства в источнике данных. Объект привязки может быть дополнительно настроен для наблюдения за изменением значения свойства источника данных и обновления на основе этих изменений. Он также может быть настроен на то, чтобы вносить изменения в свое значение обратно в исходное свойство. Объекты привязки, созданные {x:Bind}
и {Binding}
, в основном функционально эквивалентны. Но {x:Bind}
выполняет специальный код, который он генерирует во время компиляции, а {Binding}
использует проверку объектов общего назначения. Следовательно, привязки {x:Bind}
(часто называемые скомпилированными связями) обладают большой производительностью, обеспечивают проверку ваших выражений привязки во время компиляции и поддерживают отладку, позволяя вам устанавливать контрольные точки в файлах кода, которые генерируются как частичные класс для вашей страницы. Эти файлы можно найти в вашей папке obj с именами вроде (для C #) .g.cs.
Для получения дополнительной информации см. Документацию MSDN по адресу x: Bind
Оценка {x: Bind} из функций
Эта способность была добавлена к расширению разметки Bind после v1607 (Redstone 1).
Вы можете указать путь к функции, а также пути arg и константные args. Предположим, что у нас есть функция, определенная в нашем обратном коде:
public string Translate(string text, string from, string to)
Теперь мы можем использовать bind для оценки функции в нужном элементе:
<TextBlock Name="SomeText" Text="How are you?" />
<TextBlock Name="{x:Bind Translate(SomeText.Text, 'en', 'es')}" />
Функции и пути arg также могут содержать точки и заливки.