Binding w WPF

0

Nic nie pamiętam z WPFu i mam problem z banalnym bindingiem. Mam taką prościutką klasę, która implementuje INotifyPropertyChanged. Jest tam właściwość Zmienna1, właściwość Zmienna2 i właściwość Wynik (przyjmująca jakąś tam wartość po operacjach na zmiennych np. Wynik = Zmienna1 + Zmienna2).

Na początku w kodzie mam DataContext okna ustawiony na instancję mojej klasy.

Na głównej formie mam 3 textboxy.

  1. ma
Text="{Binding Path=Zmienna1, Mode=TwoWay}"/> 
  1. ma
Text="{Binding Path=Zmienna2, Mode=TwoWay}"/> 
  1. ma
Text="{Binding Path=Wynik, Mode=TwoWay}"/> 

I dzieje się coś takiego: w momencie jak odpalam program, wszystkie 3 textboxy pokazują prawidłowe wartości. Natomiast w momencie kiedy zmieniam w textboxie zawartość, zmienia się również Zmienna1 ale z wynikiem nic się nie dzieje. Jak zmusić tą właściwość "Wynik" aby na bieżąco "nasłuchiwała" zmian? To są absolutne podstawy ale mam zaćmę i w dodatku nie mogę nic znaleźć :O

0
abrakadaber napisał(a):

http://msdn.microsoft.com/pl-pl/library/system.componentmodel.inotifypropertychanged.aspx

Dalej nie do końca kojarzę :)

Mam tak:

private double zmienna1;
        public double Zmienna1
        {
            get { return zmienna1; }
            set
            {
                if (zmienna1 != value)
                {
                    zmienna1 = value;
                    NotifyPropertyChanged("Zmienna1");
                }
            }
        }

To samo dla Zmienna2. Dalej dla wynik:

private double wynik
public double Wynik
        {
            get
            {
                //jakieś obliczenia na zmiennych, powiedzmy, że 
                    wynik = Zmienna1+Zmienna2
                    return wynik;
            }
            
       }

Settera nie ma bo z założenia ma być to właściwość tylko do odczytu. Poszczególne właściwości dobrze się bindują z odpowiednimi textboxami ale tylko na starcie aplikacji. Potem, jakkolwiek bym nie zmieniał Zmienna1 i Zmienna2, wynik pozostaje taki jak przy inicjalizacji.


Edyta:
Jak w textboxie powiązanym z wynikiem pogrzebałem przy UpdateSourceTrigger to pole aktualizuje się, przy próbie zmiany zawartości ale to dalej nie to. Chciałbym, żeby przy zmianie którejkolwiek ze zmiennych wynik był od razu przeliczany na nowo i przepychany do textboxa bez konieczności ustawiania na nim fokusa itp.

1
kociol21 napisał(a):
abrakadaber napisał(a):

http://msdn.microsoft.com/pl-pl/library/system.componentmodel.inotifypropertychanged.aspx

Dalej nie do końca kojarzę :)
jaki kod podałeś taką dostałeś odpowiedź...

A co do problemu to dodaj jeszcze po NotifyPropertyChanged("Zmienna1"); NotifyPropertyChanged("Wynik");

1 użytkowników online, w tym zalogowanych: 0, gości: 1