Frage

Ich habe eine template-Steuerelement mit einer Schaltfläche Umschalten.Diese ToggleButton hat es die IsChecked-Eigenschaft eine Möglichkeit, an eine Abhängigkeit Eigenschaft.Wenn ich die Abhängigkeit-Eigenschaft explizit die Bindung funktioniert.

Das problem ist, dass nach Ich interagieren mit der toggle-button im UI, die Bindungen nicht update die IsChecked-Eigenschaft, wenn ich den dependency-Eigenschaft explizit.

Ich habe ein work arround mit TwoWay-Bindung, welche gut funktioniert.Meine Frage ist, warum verhält Sie sich so?Bin ich etwas fehlt?Ist es ein bug in dem Mechanismus für die Bindung von Silverlight?

BEARBEITEN, UM ZU ZÄHLEN SNIPPET:

Die Bindung in der ControlTemplate sieht etwas wie (ersetzt werden könnte mit TemplateBinding)

<ToggleButton x:Name="PlayPause" Grid.Column="0" 
              IsChecked="{Binding Paused, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}"
              HorizontalAlignment="Center"
              Width="50" Height="50"/>

Die explizite Einstellung der Abhängigkeitseigenschaft ist das ziemlich bog standard:

myComponent.Paused = true;
War es hilfreich?

Lösung

WPF-löscht eine Möglichkeit, Bindungen, wenn die target-Eigenschaft (IsChecked in diesem Fall geändert werden.Silverlight verwendet, um die Bindung, wenn IsChecked geändert wurde.Wenn Angehalten wurde später eingestellt, wird dieser Wert überschrieben würde IsChecked als gut.

Nach Ihnen, es scheint, Silverlight wieder WPF Verhalten.Oh well.Ich persönlich finde die änderung einer gebundenen Eigenschaft einen Fehler.Wenn die Eigenschaften sind nicht dazu gedacht, in sync Kommandierender kann eine bessere Lösung sein.

Andere Tipps

  1. Sie sollte verwenden, die TwoWay-Bindung
  2. Stellen Sie sicher, dass das Objekt, das enthält Ihre Angehalten Eigenschaft unterstützt INotifyPropertyChanged.
  3. Stellen Sie sicher, dass der setter für Paused löst das PropertyChanged-Ereignis
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top