Ho creato il binding più semplice. Una casella di testo associata a un oggetto nel codice sottostante.WPF Collegamento semplice a INotifyPropertyChanged Object
Evento: la casella di testo rimane vuota.
Il DataContext della finestra è impostato e il percorso di collegamento è presente.
Puoi dire cosa c'è che non va?
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>
codice dietro
public partial class SimpleBinding : Window
{
public Book TheBook;
public SimpleBinding()
{
TheBook = new Book() { BookName = "The Mythical Man Month" };
InitializeComponent();
}
}
L'oggetto libro
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" ?? Cosa pensi che dovrebbe accadere quando lo fai? il tuo datacontext è solo una semplice stringa chiamata MainWindow. la finestra di output dovrebbe mostrare anche un'eccezione: Impossibile trovare l'origine per l'associazione con il riferimento 'ElementName = TheBook'. BindingExpression: Path = BookName; DataItem = null; l'elemento di destinazione è 'TextBox' (Name = ''); la proprietà target è "Testo" (digita "String"). così pls darci alcune informazioni che cosa vuoi ottenere. – blindmeis
controlla anche http://msdn.microsoft.com/de-de/library/system.windows.data.binding.elementname.aspx perché il collegamento ElementName non è ciò che vuoi/hai bisogno in questo modo – blindmeis