Warum OnPropertyChanged arbeiten nicht in der Code-Behind?
Ich versuche etwas zu vereinfachen-code, indem Sie die ViewModel-Modelle in den code hinter, und die Bindung des DataContext als "dieses", aber es scheint zu funktionieren, anders im folgenden Beispiel:
Warum ist es, wenn der button angeklickt, wird der TextBlock gebunden "Nachricht" nicht ändern, auch wenn OnPropertyChanged("Nachricht") genannt wird?
XAML:
<Window x:Class="TestSimple223.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<StackPanel HorizontalAlignment="Left">
<Button Content="Button"
Click="button1_Click" />
<TextBlock
Text="{Binding Path=Message, Mode=TwoWay}"/>
<TextBlock
x:Name="Message2"/>
</StackPanel>
</Window>
Code Hinter:
using System.Windows;
using System.ComponentModel;
namespace TestSimple223
{
public partial class Window1 : Window
{
#region ViewModelProperty: Message
private string _message;
public string Message
{
get
{
return _message;
}
set
{
_message = value;
OnPropertyChanged("Message");
}
}
#endregion
public Window1()
{
InitializeComponent();
DataContext = this;
Message = "original message";
Message2.Text = "original message2";
}
private void button1_Click(object sender, RoutedEventArgs e)
{
Message = "button was clicked, message changed";
Message2.Text = "button was click, message2 changed";
}
#region INotify
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
#endregion
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du Sie noch nicht markiert die Klasse als verfügbar für property change notification. Ändern Sie die überschrift zu
Nur weil Sie die Methoden implementieren, die nicht bedeutet, dass WPF-weiß, die eine Klasse unterstützt Benachrichtigung ändern - Sie müssen es sagen, durch Markierung mit INotifyPropertyChanged. Auf diese Weise wird die Bindung Mechanismus identifizieren können, Ihre Klasse als eine mögliche Aktualisierung Ziel.