Frage

Ich habe ein Raster, das zu einer Sammlung binded wird. Aus irgendeinem Grund, den ich nicht kenne, wenn ich jetzt eine Aktion im Netz tun, wird das Gitter nicht aktualisieren.

Situation: Wenn ich eine Schaltfläche in dem Raster, werden sie einen Wert erhöhen, das in der gleichen Zeile ist. Wenn ich auf, kann ich debuggen und den Wertzuwachs sehen, aber der Wert ändert sich nicht im Netz. ABER , wenn ich auf die Schaltfläche klicken, minimieren und die Fenster wieder herzustellen, wird der Wert aktualisiert ... was kann ich den Wert aktualisiert zu tun haben, wie es vorher war?

UPDATE Dies ist nicht gelöst, aber ich akzeptierte die beste Antwort hier.

Es ist nicht gelöst, weil es als usuall funktioniert, wenn die Daten aus der Datenbank, aber nicht aus dem Cache. Objekte werden serialisiert und warf das Ereignis den Prozess verloren. Das ist, warum ich sie wieder aufbauen und es funktioniert für das, was ich weiß, weil ich mit ihnen in Wechselwirkung treten kann, aber es scheint, dass es nicht für einen unbekannten Grund für die Aktualisierung des Rasters nicht funktioniert.

War es hilfreich?

Lösung

Damit die Bindung bidirektional sein, von der Kontrolle zu Datenquelle und von Datenquelle der Datenquelle zu steuern, muß Eigenschaft zu ändern Benachrichtigungsereignisse implementieren, in einem der zwei Möglichkeiten:

  • Implementieren Sie die INotifyPropertyChanged Schnittstelle und das Ereignis auslösen, wenn die Eigenschaften ändern:

    public string Name 
    {
      get
      {
        return this._Name;
      }
      set
      {
        if (value != this._Name)
        {
            this._Name= value;
            NotifyPropertyChanged("Name");
        }
      }
    }
    
  • Inplement ein verändertes Ereignis für jede Eigenschaft, die die Kontrollen mitteilen muß, wenn sie sich ändert. Der Ereignisname in Form sein muss, Propertyname Geändert:

    public event EventHandler NameChanged;
    
    public string Name 
    {
      get
      {
        return this._Name;
      }
      set
      {
        if (value != this._Name)
        {
            this._Name= value;
            if (NameChanged != null) NameChanged(this, EventArgs.Empty);
        }
      }
    }
    

    * als Notiz Ihre Eigenschaftswerte die richtigen sind nach Fenster maximieren, da die Steuerung die Werte aus der Datenquelle neu gelesen.

Andere Tipps

Es klingt wie Sie DataBind in Ihrem Update-Code aufrufen müssen.

Ich bin mit dem Binding Objekt zwischen meiner Sammlung und meinem Grid. Normalerweise kann ich nicht haben, etwas zu nennen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top