Подтвердить что ты не робот

IntelliSense для привязки данных не работает

Через пару часов пытается отладить проблему с привязкой данных, которая была вызвана ошибочным свойством в расширении Binding. Как только я заметил ошибку, осознание того, что если IntelliSense был доступен, я, возможно, не ошибся в первую очередь. Как пользователь Visual Studio, который используется для ошибок/предупреждений при неправильном использовании имени; возможно, я испорчен, но отсутствие IntelliSense привело к ошибке.

Я провел некоторое исследование, и я обнаружил, что Intellisense для привязки данных доступен Visual Studio 2013, который я использую (Ultimate edition), Я попытался создать простое приложение WPF после второго примера в блоге. Во-первых, во втором примере в блоге возникла ошибка, которая привела к ошибке компилятора. Привязка атрибута Type=ViewModel:MainViewModel с помощью d: исправила ошибку компилятора, но свойства моего класса View-Model по-прежнему не отображаются в меню Intellisense. Мой код находится ниже и в GitHub.

MainViewModel.cs:

using System.ComponentModel;
using System.Runtime.CompilerServices;

namespace IntelliSenseForDataBinding
{
    public class MainViewModel : INotifyPropertyChanged
    {
        public MainViewModel()
        {
            Greeting = "Hello World";
            Answer = 42;
        }

        private string _Greeting;
        public string Greeting
        {
            get { return _Greeting; }
            set { _Greeting = value; OnPropertyChanged(); }
        }

        private int _Answer;
        public int Answer
        {
            get { return _Answer; }
            set { _Answer = value; OnPropertyChanged(); }
        }
        public event PropertyChangedEventHandler PropertyChanged;

        protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null)
                handler(this, new PropertyChangedEventArgs(propertyName));
        }

    }
}

MainWindow.xaml:

<Window x:Class="IntelliSenseForDataBinding.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="450"
        d:DataContext="{d:DesignInstance Type=MainViewModel, IsDesignTimeCreatable=True}"
        Title="MainWindow" Height="350" Width="525">
    <Grid>

    </Grid>
</Window>

MainWindows.xaml.cs:

using System.Windows;

namespace IntelliSenseForDataBinding
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            DataContext = new MainViewModel();
            InitializeComponent();
        }
    }
}

Вот доказательства, которые не работают:

enter image description here

Я ожидаю увидеть элемент для свойства "Приветствие" в меню IntelliSense. Любые предложения о том, почему это не так? Я также попытался сбросить настройки Visual Studio по умолчанию, на всякий случай.

Кроме того, любые предложения по дополнительным методам предотвращения или обнаружения ошибочных имен свойств в атрибутах привязки?

4b9b3361

Ответ 1

Я открыл свой проект GitHub в Visual Studio 2013, и я получил такое же поведение; нет IntelliSense для привязок.

Данные проектирования являются ключом к разрешению привязки, которое не работает, поэтому я рекомендую следующее:

  • Добавьте пространство имен проектов в элемент Window: xmlns:local="clr-namespace:IntelliSenseForDataBinding", который может помочь разрешить местоположение виртуальной машины.
  • Измените d:DataContext, чтобы использовать пространство имен local вместо d:Type, по существу предоставляя местоположение типа, который вы пытаетесь использовать: d:DataContext="{d:DesignInstance local:MainViewModel, IsDesignTimeCreatable=True}"
  • Очистка, сборка и тестирование

Доказательство: enter image description here