Как установить Page Wide BindingContext в заголовке страницы XAML - PullRequest
0 голосов
/ 16 мая 2018

Каков правильный синтаксис для установки bindingContext страницы XAML в ее заголовке (где определены пространства имен и класс x: class)?

Я знаю, это может быть установлено

<ContentView.ContextBinding>
<vm:RedViewModel/>
</ContentView.ContextBinding>

но что-то вроде следующего Например, выглядело бы аккуратнее

<?xml version="1.0" encoding="UTF-8" ?>
<ContentView x:Class="MVVMFramework.VVMs.Red.RedView"
             xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:vm="clr-namespace:MVVMFramework.VVMs.Red"
             BackgroundColor="Red"
             BindingContext="{Binding Source = {vm:RedViewModel}}"> //Something like this

1 Ответ

0 голосов
/ 16 мая 2018

Раньше был баг со вторым подходом, который приводил к созданию ViewModel дважды, не будучи уверенным, что он там больше, вы можете легко проверить его.

Рядомчто не существует решения для «серебряной пули», которое подойдет для всех случаев.Что если вам нужно передать некоторые данные в конструктор ViewModel?Это будет сложно с XAML.Скорее всего, имеет смысл иметь контейнер IOC, чтобы внедрить эти свойства в ViewModel, так что, как это будет происходить в коде, а не в XAML.

Я бы сказал, оцените сами, чтоподходит для вашего решения и придерживайтесь его, чтобы оно было последовательным.

PS: Я не говорю, что вы не должны делать это в XAML, делайте это, если это имеет смысл в вашем конкретном случае.

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