MVVM - Mit Button Wert in meiner View verändern


#1

Hallo.

Ich habe folgendes Problem und ich finde zurzeit auch keine Lösung dafür:

Ich möchte gerne in meiner View auf den Button Klicken und im Model soll der Wert dann geändert und an die TextBox zurück gegeben werden.

Hier der Quellcode:

View:
[XML]

    <Grid>
    <TextBox HorizontalAlignment="Left" Height="23" Margin="188,34,0,0" TextWrapping="Wrap" Text="{Binding Name}" VerticalAlignment="Top" Width="120"/>
    
    <Button Content="1" HorizontalAlignment="Left" Margin="215,185,0,0" VerticalAlignment="Top" Width="75"/>




</Grid>

[/XML]
[CSharp]
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.DataContext = new ErgebnisViewModel(Model.CreatePerson());
}
}
}[/CSharp]

View Model:
[CSharp]
class ErgebnisViewModel : INotifyPropertyChanged
{
private Model _Model;

    //  Konstruktor

    public ErgebnisViewModel(Model model)
    {
        _Model = model;
        _Ergebnis = _Model.Ergebnis;
      
    }

    // Schnittstellen-Ereignis

    public event PropertyChangedEventHandler PropertyChanged;

    protected internal void OnPropertyChanged(string propertyname)
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(propertyname));
    }

    // Eigenschaften

    private string _Ergebnis;
    public string Name
    {
        get { return _Ergebnis; }
        set
        {
            if (_Ergebnis == value) return;
            _Ergebnis = value;
            OnPropertyChanged("Ergebnis");
        }
    }


}[/CSharp]

und Model:
[CSharp]
public class Model
{

        public string Ergebnis { get; set; }
        

        public static Model CreatePerson()
        {
            return new Model { Ergebnis = "0"};
        }
    
}[/CSharp]

Danke für jede Antwort.

Gruß Flier


#2

Dein Databinding sieht soweit i.O. aus normalerweise sollte sich das Textfeld ändern wenn du die Property “Name” über "ErgebnisViewModel.Name = IRGENDEINSTRING " änderst.

Wo ist den genau dein Problem?


#3

Hallo,

gibt die Console Binding Errors aus? Mach mal zum Binding ein UpdateSource=OnPropertyChanged dazu.


#4

Du änderst zwar das Attribut “_Ergebnis” aber das Property “Name” und auf diese Property ist die TextBox gebindet.