INotifyPropertyChanged.PropertyChanged immer NULL
Ich weiß, ich bin etwas falsch hier, aber was. Bitte haben Sie einen Blick und herausfinden, mein Fehler.
Sehe ich "Peter" in meiner textbox aber kein "Jack", nachdem die Schaltfläche klicken.
Meiner Klasse
namespace App
{
class Person : INotifyPropertyChanged
{
private string name;
public String Name
{
get { return name; }
set { name = value; OnPropertyChanged("Name"); }
}
public Person()
{
Name = "Peter";
}
public void SetName(string newname)
{
Name = newname;
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string prop)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(prop));
}
}
}
}
Meiner XAML -
<Window x:Class="test.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:app="clr-namespace:App"
Title="MainWindow" Height="400" Width="400">
<Grid>
<Grid.Resources>
<app:Person x:Key="person"/>
</Grid.Resources>
<TextBox Width="100" Height="26" Text="{Binding Source={StaticResource person}, Path=Name, Mode=TwoWay}" />
<Button Content="Button" Height="23" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />
</Grid>
Und meine codebehind
public partial class MainWindow : Window
{
Person person;
public MainWindow()
{
InitializeComponent();
person = new Person();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
person.SetName("Jack");
}
}
Dank.
Es gibt zwei Person(en). TextBox gebunden zur Person von Grid-Ressourcen, während die-Taste setzt den Namen der Person aus dem privaten Bereich. Ich glaube, Sie sollten eine Person als DataContext des Fensters. Dies wird klar, code und markup.
Möchten Sie vielleicht zu Lesen dieser & dieser, da Sie schon einige Verwirrungen, die in Ihren Bindungen und Ressourcen.
Möchten Sie vielleicht zu Lesen dieser & dieser, da Sie schon einige Verwirrungen, die in Ihren Bindungen und Ressourcen.
InformationsquelleAutor Core-One | 2011-04-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie zwei Instanzen von Person. PropertyChanged ist nicht null in die statische Ressource
Dies ist nicht wirklich das, was StaticResources sind. Loszuwerden, die statische Ressource, ändern der Bindung:
und fügen Sie diese zu Ihrem Konstruktor:
Hat mich fast einen blutigen Tag so weit zu kommen. Deine Antwort endlich das problem gelöst für mich.
danke Mann, du hast mich gerettet, einige Nägel zu beißen 😉
InformationsquelleAutor James L
Objekt person im codebehind der MainWindow ist nicht das gleiche Objekt, Sie haben die Bindung in XAML
Wenn Sie möchten, verwenden Sie das Objekt aus den Ressourcen, die Sie haben, um es zu finden im code hinter so etwas, wie diese im Konstruktor
InformationsquelleAutor Zee