IntelliSense для ViewModel в редакторе XAML Visual Studio

280
15 июня 2017, 03:51

При разработке WPF MVVM приложения у нас в разметке XAML повсеместно используется Binding, как получить удобство разработки в виде подсказок IntelliSense при вводе названий свойств из VM? Ведь, если мы ошибемся хотя бы в одном символе, привязка работать не будет, поэтому приходится часто переключаться между файлами проекта и копировать имена (а если VM собрана в библиотеку и исходника вообще у нас нет?).

Причем если в разметке указать что-то типа:

<Window.DataContext>
    <local:MainVM/>
</Window.DataContext>

(и собрать проект) то IntelliSense начинает помогать.
Но я ведь хочу быть хорошим разработчиком и, по рекомендациям, такую зависимость делать не хочу (и мне это в общем-то понятно).

Какие вы знаете и/или используете способы для включения подсказок в такой ситуации (есть ли они вообще)?

Answer 1

Решение удалось найти самостоятельно. Подсмотрел здесь: https://stackoverflow.com/questions/29394295/intellisense-for-data-binding-not-working

Выглядит оно так:

<Window x:Class="WpfTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfTest"
        d:DataContext="{d:DesignInstance Type=local:MainVM}"
        mc:Ignorable="d" ...

т.е. в XAML должно быть подключено пространство имен xmlns:d="http://schemas.microsoft.com/expression/blend/2008" (оно подключено по умолчанию при создании нового окна) и тогда можно воспользоваться фичей: d:DataContext="{d:DesignInstance Type=local:MainVM}", при этом если указать параметр IsDesignTimeCreatable=True, то студия будет пытаться создать экземпляр указанной VM прямо во время работы в дизайнере и наполнять форму реальными данными (что иногда может замедлить работу дизайнера или даже повалить его)

READ ALSO
Событие клика на скроллах панели

Событие клика на скроллах панели

У меня есть панель с элементами внутри нее, у панели есть скроллинг по горизонтали и вертикалиСобытие OnScroll панели происходит, если кликнуть...

215
Bootstrap multi select buttons

Bootstrap multi select buttons

Всем приветРаньше я использовал стандартные checkbox теперь я хочу начать использовать Bootstrap multi select

422
c#. Взаимодействие с Exchange Server

c#. Взаимодействие с Exchange Server

Необходимо написать небольшое приложение, которое работает с почтовыми ящиками в Exchange Server - Создает/изменяет записи в календаре, синхронизирует...

313