Hallo :) Ich versuche herauszufinden, wie die INotifyPropertyChanged mit einer sehr grundlegenden Anwendung arbeiten. Ich habe einfach eine Schaltfläche in meinem Hauptfenster und wenn Sie es drücken, sollte ein Ereignis ausgelöst werden, um eine TextBox zu aktualisieren, die an ein bestimmtes Attribut gebunden wurde. Auch wenn die Ereignisse ausgelöst werden, sind sie immer null und daher wird die textBox nicht aktualisiert.INotifyPropertyChanged, Ereignis immer null
<Window x:Class="StockViewer.MainWindow"
<!--Just erased some basic xaml here-->
Title="MainWindow" Height="350" Width="525">
<Window.DataContext>
<local:RandomGen/>
</Window.DataContext>
<Grid>
<Button Click="incr" Height="30" VerticalAlignment="Top" Background="DarkGoldenrod"></Button>
<TextBlock VerticalAlignment="Top" Margin="40" Text="{Binding price, UpdateSourceTrigger=PropertyChanged}" Background="Aqua"></TextBlock>
</Grid>
Wenn die Taste gedrückt wird, sollte der Preis ändern:
public partial class MainWindow : Window
{
private RandomGen gen;
public MainWindow()
{
gen = new RandomGen();
InitializeComponent();
}
private void incr(object sender, RoutedEventArgs e)
{
gen.price = 7;
}
}
class RandomGen : NotifiedImp
{
public RandomGen()
{
_i = 3;
}
private int _i;
public int price
{
get { return _i; }
set
{
_i = value;
OnPropertyChanged("price");
}
}
}
class NotifiedImp: INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this,new PropertyChangedEventArgs(propertyName));
}
}
}
Es ist nur wirklich seltsam, der Handler immer null ist. Danke :)
Sie sind nicht an "gen" gebunden. –