- How to handle binding in CheckBox?
There are several ways to do that binding but the best way I found is the following where the Click event is handled setting a specific ClickMode:<CheckBox x:Name="checkBoxMergeAudio" IsChecked="{Binding IsMergeAudio, Mode=TwoWay}" Margin="0,0,0,0" Click="checkBoxMergeAudio_Changed" ClickMode="Release"> <TextBlock TextWrapping="Wrap" Text="{Binding LocalizedResources.MergeAudio, Source={StaticResource LocalizedStrings}}" /> </CheckBox>
and in the code behind:
private void checkBoxMergeAudio_Changed(object sender, RoutedEventArgs e) { //save the changed state of the checkbox Utility.SetAppSettings(Constants.MergeAudio, (((SettingsPivotDataSource)DataContext).IsMergeAudio).ToString()); }
Note that using the TextBox style of the CheckBox, I succeded to handle also the possible wrapping of the text field of that control.
- How to handle binding in RadioButton?
Also in this case there are several ways! … one can be the following:<StackPanel Margin="0,0,0,0" Grid.Row="0" Background="{StaticResource BrushTransparentGray}"> <RadioButton Content="{Binding LocalizedResources.AlwaysLogin, Source={StaticResource LocalizedStrings}}" Name="alwaysLoginButton" IsChecked="{Binding LoginType, Converter={StaticResource EqualityConverter}, ConverterParameter=0, Mode=OneWay}" GroupName="AutoLoginGroup" Click="alwaysLoginButton_Checked" ClickMode="Release" /> <RadioButton Content="{Binding LocalizedResources.DailyLogin, Source={StaticResource LocalizedStrings}}" Name="daylyLoginButton" IsChecked="{Binding LoginType, Converter={StaticResource EqualityConverter}, ConverterParameter=1, Mode=OneWay}" GroupName="AutoLoginGroup" Click="daylyLoginButton_Checked" ClickMode="Release" /> <RadioButton Content="{Binding LocalizedResources.TimeStampLogin, Source={StaticResource LocalizedStrings}}" Name="loginEveryButton" IsChecked="{Binding LoginType, Converter={StaticResource EqualityConverter}, ConverterParameter=2, Mode=OneWay}" GroupName="AutoLoginGroup" Click="loginEveryButton_Checked" ClickMode="Release" /> </StackPanel>
and in the code behind:
private void alwaysLoginButton_Checked(object sender, RoutedEventArgs e) { LoginTypeWrapper actualLoginTypeWrapper = new LoginTypeWrapper(LoginType.ALWAYS); if (!DataSourceManager.SettingsPivotDataSource.LoginType.Equals(actualLoginTypeWrapper)) { DataSourceManager.SettingsPivotDataSource.LoginType = actualLoginTypeWrapper; //salvo la nuova impostazione scelta dall'utente Utility.SetAppSettings(Constants.LoginType, LoginType.ALWAYS.ToString()); } } private void daylyLoginButton_Checked(object sender, RoutedEventArgs e) { LoginTypeWrapper actualLoginTypeWrapper = new LoginTypeWrapper(LoginType.DAILY); if (!DataSourceManager.SettingsPivotDataSource.LoginType.Equals(actualLoginTypeWrapper)) { DataSourceManager.SettingsPivotDataSource.LoginType = actualLoginTypeWrapper; //salvo la nuova impostazione scelta dall'utente Utility.SetAppSettings(Constants.LoginType, LoginType.DAILY.ToString()); } } private void loginEveryButton_Checked(object sender, RoutedEventArgs e) { LoginTypeWrapper actualLoginTypeWrapper = new LoginTypeWrapper(LoginType.EVERY); if (!DataSourceManager.SettingsPivotDataSource.LoginType.Equals(actualLoginTypeWrapper)) { DataSourceManager.SettingsPivotDataSource.LoginType = actualLoginTypeWrapper; //salvo la nuova impostazione scelta dall'utente Utility.SetAppSettings(Constants.LoginType, LoginType.EVERY.ToString()); } }
where the converter is the following:
public class EqualityConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (parameter != null && value is LoginTypeWrapper) { if (((LoginTypeWrapper)value).Code == System.Convert.ToInt32(parameter)) { return true; } } return false; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } }
-
Unisciti a 149 altri iscritti
Categorie
Supporta questo Blog
Translate
-
Articoli recenti
- L’area pedonale di Piazza Castello a Torino e quelle indecorose riparazioni con asfalto del lastricato in pietra 19 Maggio 2023
- Impressionante presenza di ratti nel giardino di piazza Carlo Felice a Torino 8 Maggio 2023
- Assistenza rapida: cambia interfaccia l’utile app per ricevere/fornire assistenza da remoto (su PC Windows 10/11) 4 Maggio 2023
- Come (e perché) ritornare a un account Amazon personale dopo essere passati a uno Amazon Business 20 aprile 2023
- Quel pericoloso lastricato di pietra presente davanti alla Mole Antonelliana, simbolo di Torino e attrattiva per molti turisti 7 aprile 2023
Articoli in evidenza
- … su phileasfogg2020
Archivi
Classifica Post
- Come sapere se un rubinetto (e.g. per lavatrice o del gas) è aperto o chiuso?
- TicketOne: cosa fare se non si riesce ad acquistare un biglietto in quanto viene indicato che "Il codice fiscale inserito risulta già registrato"?
- Come modificare o cancellare un beneficiario/contatto precedentemente salvato in un sito della banca (e.g. BNL, IngDirect, Intesa SanPaolo)
- Come collegare un telefono a un modem con SIM per ricevere/effettuare telefonate tramite un apparato telefonico multifrequenza
- Come connettere uno smartphone o un tablet con un cavo Ethernet
- Come collegare, a una linea in fibra, telefoni anche tradizionali e in numero maggiore alle due prese telefoniche fornite dal modem/router
- Da un solo smartphone come riuscire a gestire più SPID, anche ciascuno associato a persone differenti
- Come recuperare il PIN/PUK della propria Carta d'Identità Elettronica (CIE) e poi leggerla con un lettore NFC
- Correttore ortografico e grammaticale per l'italiano
- Drawing UML 2.5 diagrams with Visio 2016 (even with the Standard edition)
Foto su Flickr
Annunci