Oggi aggiorno un'app di Windows Store in base alla modifica del progetto dell'interfaccia utente. Una delle modifiche è la sostituzione di CheckBox
con un ToggleSwitch
.È richiesto "Mode = Twoway" esplicito per Toggleswitch
modo che il codice viene aggiornato dal
<CheckBox IsChecked="{Binding BooleanProperty}" ...
a
<ToggleSwitch IsOn="{Binding BooleanProperty"} ... //does not update data source
Poi ho notato che la commutazione ToggleSwitch
non aggiorna il sottostante BooleanProperty
, devo aggiungere Mode=TwoWay
per farlo funzionare.
<Toggleswitch IsOn="{Binding BooleanProperty, Mode=TwoWay"} ... //update data source
Da quello che ho imparato in WPF, non è necessario impostare in modo esplicito Mode=TwoWay
sulla proprietà IsChecked di CheckBox, perché è TwoWay
per impostazione predefinita.
In generale, le proprietà di controllo modificabili dall'utente, come quelle delle caselle di testo e delle caselle di controllo, sono predefinite per le associazioni bidirezionali, mentre la maggior parte delle altre proprietà predefinite per le associazioni unidirezionali.
E ho pensato che ToggleSwitch
è solo un altro CheckBox con supporto touch migliore, ed è disponibile solo su Windows Store e Windows Phone.
Perché ToggleSwitch.IsOn
non è l'impostazione predefinita per il binding TwoWay? Ci sono altre differenze tra un CheckBox e un ToggleSwitch?
++, ma non sono sicuro di questa parte: "È possibile che alcuni controlli/proprietà sovrascrivano questo comportamento" - la dicitura MSDN suggerisce che il valore predefinito sia sempre "OneWay". – McGarnagle
@McGarnagle D'accordo, l'ho messo lì perché .NET può essere sempre strano e fare uno off. Non ha davvero bisogno di essere lì però – BradleyDotNET