Через пару часов пытается отладить проблему с привязкой данных, которая была вызвана ошибочным свойством в расширении 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();
}
}
}
Вот доказательства, которые не работают:
Я ожидаю увидеть элемент для свойства "Приветствие" в меню IntelliSense. Любые предложения о том, почему это не так? Я также попытался сбросить настройки Visual Studio по умолчанию, на всякий случай.
Кроме того, любые предложения по дополнительным методам предотвращения или обнаружения ошибочных имен свойств в атрибутах привязки?