Nach ein paar Stunden versucht, ein Problem mit Datenbindung zu beheben, die durch eine falsch eingegebene Eigenschaft in einer Binding
Erweiterung verursacht wurde. Sobald ich den Fehler bemerkte, erkannte ich, dass ich, wenn IntelliSense verfügbar war, den Fehler vielleicht nicht gemacht hatte. Als Visual Studio-Benutzer, der an Fehler/Warnungen gewöhnt ist, wenn er einen Namen falsch definiert; vielleicht bin ich verwöhnt, aber das Fehlen von IntelliSense führte zu dem Fehler.IntelliSense für Datenbindung funktioniert nicht
Ich habe etwas Forschung und ich fand, dass Intellisense for Data Binding is available is Visual Studio 2013 die ich benutze (Ultimate Edition). Ich habe versucht, eine einfache WPF-App nach dem zweiten Beispiel im Blog zu erstellen. Erstens: Im zweiten Beispiel im Blog scheint ein Fehler aufgetreten zu sein, der zu einem Compilerfehler geführt hat. Prefixing the Type=ViewModel:MainViewModel
attribute with d:
hat den Compiler-Fehler behoben, aber die Eigenschaften meiner View-Model-Klasse werden immer noch nicht im Intellisense-Menü angezeigt. Mein Code ist unter und in 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();
}
}
}
Hier ist der Beweis dafür, dass nicht funktioniert:
Ich würde erwarten, ein Element für die 'Gruß' Eigenschaft im IntelliSense-Menü zu sehen. Irgendwelche Vorschläge, warum es nicht da ist? Ich habe auch versucht, die Visual Studio-Einstellungen auf die Standardeinstellung zurückzusetzen, nur für den Fall.
Darüber hinaus Vorschläge zu zusätzlichen Methoden zum Verhindern oder Erkennen von falsch geschriebenen Eigenschaftsnamen in Binding-Attribute?
Ich denke, das ist vielleicht die Antwort: http://StackOverflow.com/Questions/24525414/intellisense-not-working-in-visual-studio-2013-for-Xaml –
Nein, ich habe nur checkee d und ich habe Blend für Visual Studio installiert. IntelliSense arbeitet für alles andere, nur für Datenbindung. –