Ух, какая боль! Будем надеяться, что MS добавит поддержку VS: время разработки для x: Bind.
Мы можем использовать конструктор VS, а также легко переключаться на x: Bind вместо Binding. Вот что я сделал:
В моем представлении я добавил свойство для получения моей модели представления. Это имеет смысл, поскольку пути x: Bind относятся к странице (т. Е. Объекту View).
На своей странице XAML я добавил следующее к <Page ... >
в верхней части XAML:
mc:Ignorable="d"
d:DataContext="{d:DesignInstance Type=local:MyView, IsDesignTimeCreatable=False}"
DataContext="{x:Bind}"
Таким образом, фактический контекст данных страницы устанавливается на саму страницу из-за {x:Bind}
. Это потому, что x:Bind
относится к странице, и путь не указан.
В то же время из-за строки d:DataContext
конструктор VS использует класс MyView (без создания экземпляра) для взаимодействия с конструктором VS. Это позволяет проектировать VS из MyView, где вы можете затем прокрутить вниз до свойства ViewModel, развернуть его и выбрать элемент, с которым вы хотите связать.
Когда вы сделаете все это, конструктор VS создаст оператор Binding, путь которого относительно View, то есть он точно совпадает с путем, ожидаемым x: Bind. Итак, если вы хотите позже переключиться на x: Bind, вы можете просто найти и заменить все "{Binding
" на "{x:Bind
".
Зачем нам даже строка d:DataContext
, чтобы указать VS, на какой класс смотреть? Хороший вопрос, поскольку вы могли бы подумать, что VS может выяснить, что следующая строка устанавливает DataContext для страницы, используя DataContext={x:Bind}
. Попробуйте, это не работает и не работает, если вы измените x: Bind to Binding относительно себя.
Надеюсь, эта ситуация будет исправлена MS !!