Ich habe die einfachste Bindung erstellt. Ein Textfeld, das an ein Objekt im nachfolgenden Code gebunden ist.Einfache WPF-Bindung an INotifyPropertyChanged Objekt
Event obwohl - das Textfeld bleibt leer.
Der DataContext des Fensters ist festgelegt und der Bindungspfad ist vorhanden.
Können Sie sagen, was los ist?
XAML
<Window x:Class="Anecdotes.SimpleBinding"
x:Name="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="SimpleBinding" Height="300" Width="300" DataContext="MainWindow">
<Grid>
<TextBox Text="{Binding Path=BookName, ElementName=TheBook}" />
</Grid>
</Window>
-Code hinter
public partial class SimpleBinding : Window
{
public Book TheBook;
public SimpleBinding()
{
TheBook = new Book() { BookName = "The Mythical Man Month" };
InitializeComponent();
}
}
Das Buch Objekt
public class Book : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string name)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(name));
}
}
private string bookName;
public string BookName
{
get { return bookName; }
set
{
if (bookName != value)
{
bookName = value;
OnPropertyChanged("BookName");
}
}
}
}
DataContext = "MainWindow" Was sollte Ihrer Meinung nach passieren, wenn Sie das tun? Ihr Datenkontext ist nur eine einfache Zeichenfolge namens MainWindow. Ihr Ausgabefenster sollte Ihnen auch eine Ausnahme anzeigen: Die Quelle für die Bindung mit der Referenz 'ElementName = TheBook' kann nicht gefunden werden. BindingExpression: Pfad = Buchname; Datenelement = null; Zielelement ist 'TextBox' (Name = ''); Zieleigenschaft ist 'Text' (Typ 'String'). Bitte geben Sie uns einige Informationen, was Sie erreichen möchten. – blindmeis
überprüfen Sie auch http://msdn.microsoft.com/de-de/library/system.windows.data.binding.elementname.aspx, da die Bindung von ElementName nicht das ist, was Sie wollen/brauchen – blindmeis