Traduction▲
Ce tutoriel est la traduction la plus fidèle possible du tutoriel original de Peter Bull, Windows Phone 7 - Windows Phone 7 Application Settings Example.
Introduction▲
Les applications Windows Phone 7 prennent en charge la possibilité d'enregistrer les paramètres d'application afin de sauvegarder les options de personnalisation sur un dispositif.
Exemple de paramètres d'application pour Windows Phone 7▲
Étape 1▲
Démarrez Microsoft Visual Web Developer 2010 Express pour Windows Phone, ensuite sélectionnez Fichier puis Nouveau Projet… Sélectionnez Visual C# ensuite Silverlight for Windows Phone puis Application Windows Phone dans les modèles installés, sélectionnez un emplacement si vous le souhaitez, puis entrez un nom pour le projet et appuyez sur OK :
Étape 2▲
Étape 3▲
Sélectionnez Projet ensuite Ajouter une classe…, et sélectionnez le modèle Classe s'il ne l'est pas déjà, ensuite modifiez le Nom en Settings.cs :
Étape 4▲
Ajoutez la nouvelle classe au Projet en cliquant sur Ajouter, ensuite dans la vue de code pour la nouvelle Classe, au-dessus de namespace ApplicationSettings tapez ceci :
using System.ComponentModel;
using System.IO.IsolatedStorage;Également dans la vue de code, à la fin de la ligne public class Settings tapez ceci :
: INotifyPropertyChangedToujours dans la vue de code, en dessous du « { » de la ligne public class Settings tapez ceci :
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
private IsolatedStorageSettings appSettings = IsolatedStorageSettings.ApplicationSettings;Étape 5▲
Pendant que nous en sommes à la vue de code pour Settings.cs, en dessous de private IsolatedStorageSettings appSettings = IsolatedStorageSettings.ApplicationSettings; tapez les méthodes et propriétés suivantes :
public object Get(string key)
{
return appSettings.Contains(key) ? appSettings[key] : null;
}
public void Set(string key, object value)
{
if (appSettings.Contains(key)) { appSettings[key] = value; }
else { appSettings.Add(key, value); }
appSettings.Save();
}
public object Default(object value, object fallback)
{
return value == null ? fallback : value;
}
public string PageTitle
{
get { return (string)Default(Get("pagetitle"), "page title"); }
set
{
Set("pagetitle", value);
NotifyPropertyChanged("PageTitle");
}
}
public Visibility ShowTitle
{
get { return (Visibility)Default(Get("showtitle"), Visibility.Visible); }
}
public bool ShowTitleToggle
{
get { return ShowTitle == Visibility.Visible; }
set
{
Set("showtitle", value ? Visibility.Visible : Visibility.Collapsed);
NotifyPropertyChanged("ShowTitle");
NotifyPropertyChanged("ShowTitleToggle");
NotifyPropertyChanged("ShowTitleText");
}
}
public string ShowTitleText
{
get { return ShowTitleToggle ? "on" : "off"; }
}Étape 6▲
Faites un clic droit sur App.xaml dans l'Explorateur de solutions et choisissez Afficher le code. Ensuite dans la vue de code pour App.xaml.cs, au-dessus de la ligne public App() tapez ceci :
public Settings Settings = new Settings();
Étape 7▲
Sélectionnez Projet ensuite Ajouter un nouvel élément…, et sélectionnez le modèle Page en mode portrait Windows Phone, puis modifiez le Nom en SettingsPage.xaml :
Étape 8▲
Ajoutez la nouvelle classe au Projet en cliquant sur Ajouter, ensuite dans le volet XAML pour SettingsPage.xaml, au-dessus de la ligne <Grid x:Name="LayoutRoot" Background="Transparent"> tapez le code XAML suivant :
<phone:PhoneApplicationPage.Resources>
<Style x:Key="PhoneToggleSwitch" TargetType="ToggleButton">
<Setter Property="Background" Value="{StaticResource PhoneBackgroundBrush}"/>
<Setter Property="Foreground" Value="{StaticResource PhoneAccentBrush}"/>
<Setter Property="BorderBrush" Value="{StaticResource PhoneForegroundBrush}"/>
<Setter Property="BorderThickness" Value="3"/>
<Setter Property="MinWidth" Value="90"/>
<Setter Property="MaxWidth" Value="90"/>
<Setter Property="MinHeight" Value="90"/>
<Setter Property="MaxHeight" Value="90"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToggleButton">
<Grid Background="Transparent">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal"/>
<VisualState x:Name="MouseOver"/>
<VisualState x:Name="Pressed"/>
<VisualState x:Name="Disabled">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="border" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Visibility>Collapsed</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="borderDisabled" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Visibility>Visible</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
<VisualStateGroup x:Name="CheckStates">
<VisualState x:Name="Checked">
<Storyboard>
<DoubleAnimation Duration="00:00:00.3" Storyboard.TargetName="switchButton"
Storyboard.TargetProperty="(Canvas.Left)" To="58"/>
<DoubleAnimation Duration="00:00:00.3" Storyboard.TargetName="rectangleSwitchOn"
Storyboard.TargetProperty="Width" To="58"/>
<DoubleAnimation Duration="00:00:00.3" Storyboard.TargetName="switchButtonDisabled"
Storyboard.TargetProperty="(Canvas.Left)" To="58"/>
<DoubleAnimation Duration="00:00:00.3" Storyboard.TargetName="rectangleSwitchOnDisabled"
Storyboard.TargetProperty="Width" To="58"/>
</Storyboard>
</VisualState>
<VisualState x:Name="Unchecked">
<Storyboard>
<DoubleAnimation Duration="00:00:00.3" Storyboard.TargetName="switchButton"
Storyboard.TargetProperty="(Canvas.Left)" To="-10"/>
<DoubleAnimation Duration="00:00:00.3" Storyboard.TargetName="rectangleSwitchOn"
Storyboard.TargetProperty="Width" To="0"/>
<DoubleAnimation Duration="00:00:00.3" Storyboard.TargetName="switchButtonDisabled"
Storyboard.TargetProperty="(Canvas.Left)" To="-10"/>
<DoubleAnimation Duration="00:00:00.3" Storyboard.TargetName="rectangleSwitchOnDisabled"
Storyboard.TargetProperty="Width" To="0"/>
</Storyboard>
</VisualState>
</VisualStateGroup>
<VisualStateGroup x:Name="FocusStates">
<VisualState x:Name="Focused"/>
<VisualState x:Name="Unfocused"/>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Border x:Name="border" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}" Width="89" Height="34" HorizontalAlignment="Right" Margin="0,20,0,20">
<Canvas x:Name="switchContainer" Margin="4">
<Rectangle x:Name="rectangleSwitchOn" Width="0" Height="20" Fill="{TemplateBinding Foreground}"/>
<Border x:Name="switchButton" Canvas.Top="-12" BorderThickness="{TemplateBinding BorderThickness}"
BorderBrush="{TemplateBinding Background}">
<Rectangle Width="20" Height="38" Fill="{StaticResource PhoneForegroundBrush}"/>
</Border>
</Canvas>
</Border>
<Border x:Name="borderDisabled" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}"
BorderBrush="{StaticResource PhoneInactiveBrush}" Width="89" Height="34" HorizontalAlignment="Right"
Margin="0,20,0,20" Visibility="Collapsed">
<Canvas x:Name="switchContainerDisabled" Margin="4">
<Rectangle x:Name="rectangleSwitchOnDisabled" Width="0" Height="20" Fill="{StaticResource PhoneInactiveBrush}"/>
<Border x:Name="switchButtonDisabled" Canvas.Top="-12" BorderThickness="{TemplateBinding BorderThickness}"
BorderBrush="{TemplateBinding Background}">
<Rectangle Width="20" Height="38" Fill="{StaticResource PhoneInactiveBrush}"/>
</Border>
</Canvas>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</phone:PhoneApplicationPage.Resources>Étape 9▲
Pendant que nous en sommes au volet XAML pour SettingsPage.xaml, entre les lignes <Grid Grid.Row="1" x:Name="ContentGrid"> et </Grid>, tapez le code XAML suivant :
<StackPanel>
<TextBlock Text="Page Title Text" Style="{StaticResource PhoneTextTitle3Style}"/>
<TextBox Text="{Binding Mode=TwoWay, Path=PageTitle}" />
<TextBlock Text="Page Title Visibility" Style="{StaticResource PhoneTextTitle3Style}"/>
<Grid Margin="10">
<TextBlock VerticalAlignment="Center" Style="{StaticResource PhoneTextExtraLargeStyle}"
Text="{Binding Path=ShowTitleText}"/>
<ToggleButton HorizontalAlignment="Right" Style="{StaticResource PhoneToggleSwitch}"
IsChecked="{Binding Mode=TwoWay,Path=ShowTitleToggle}"/>
</Grid>
</StackPanel>XAML :
Design :
Étape 10▲
Faites un clic droit sur la page ou sur l'entrée pour SettingsPage.xaml dans l'Explorateur de solutions et choisissez l'option Afficher le code. Dans la vue de code, au-dessus de public SettingsPage tapez la déclaration Application suivante :
public App app = (App)Application.Current;Également dans la vue de code, dans le constructeur public SettingsPage() en dessous de InitializeComponent(); tapez ceci :
this.DataContext = app.Settings;
PageTitle.Text = "settings";Étape 11▲
Faites un clic droit sur le Projet dans l'Explorateur de solutions et choisissez Ajouter, ensuite Nouveau Dossier, et nommez-le « images » (sans les guillemets) :
Étape 12▲
Téléchargez l'image suivante (settings.png) en faisant un clic droit sur l'image ci-dessous et choisissez « Enregistrer l'image sous… » et enregistrez-la dans un dossier sur votre ordinateur :
settings.png
Étape 13▲
Faites un clic droit sur le dossier « images » du Projet dans l'Explorateur de solutions, et choisissez Ajouter, ensuite Élément existant… Puis dans la fenêtre Ajouter un élément existant, sélectionnez le dossier dans lequel vous avez enregistré l'image, ensuite choisissez Ajouter pour ajouter settings.png au dossier « images » dans le projet :
Étape 14▲
Puisque nous sommes dans l'Explorateur de solutions, cliquez sur l'image « settings.png », ensuite allez dans la Boîte de propriétés et modifiez Action de génération à Contenu :

Étape 15▲
Retournez au concepteur de vues en sélectionnant l'onglet MainPage.xaml, ensuite dans le volet XAML au-dessus de la balise <Grid x:Name="LayoutRoot" Background="{StaticResource PhoneBackgroundBrush}"> tapez le code ApplicationBar XAML suivant :
<phone:PhoneApplicationPage.ApplicationBar>
<shell:ApplicationBar IsVisible="True" IsMenuEnabled="False">
<shell:ApplicationBar.Buttons>
<shell:ApplicationBarIconButton Text="settings" IconUri="/images/settings.png" Click="Settings_Click"/>
</shell:ApplicationBar.Buttons>
</shell:ApplicationBar>
</phone:PhoneApplicationPage.ApplicationBar>Étape 16▲
Puisque nous en sommes au volet XAML, remplacez le XAML du titre de la page dans le TitlePanel, <TextBlock x:Name="PageTitle" Text="page name" Margin="-3,-8,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>, par le code XAML suivant :
<TextBlock x:Name="PageTitle" Text="{Binding Path=PageTitle}" Margin="-3,-8,0,0"
Style="{StaticResource PhoneTextTitle1Style}" Visibility="{Binding Path=ShowTitle}"/>Étape 17▲
Faites un clic droit sur la page ou sur l'entrée pour MainPage.xaml dans l'Explorateur de solutions et choisissez l'option Afficher le code. Dans la vue de code, au-dessus de public MainPage() tapez la déclaration Application suivante :
public App app = (App)Application.Current;Également dans la vue de code, dans le constructeur public MainPage() en dessous de InitializeComponent(); tapez ceci :
this.DataContext = app.Settings;Étape 18▲
Puisque nous en sommes à la vue de code pour MainPage.xaml.cs, au-dessus de public MainPage() tapez le gestionnaire d'événements suivant :
private void Settings_Click(object sender, EventArgs e)
{
NavigationService.Navigate(new Uri("/SettingsPage.xaml",UriKind.Relative));
}Étape 19▲
Enregistrez le Projet maintenant que vous avez terminé l'application Windows Phone Silverlight. Sélectionnez l'option Windows Phone Emulator ensuite sélectionnez Debug puis Démarrer le débogage ou cliquez sur Démarrer le débogage :

Dès que vous l'aurez fait, ce qui suit apparaîtra dans l'émulateur Windows Phone une fois chargé :
Étape 20▲
Cliquez sur le bouton settings, vous pouvez ensuite basculer la visibilité du titre à « on » ou « off », ou modifier le titre :
Étape 21▲
Vous pouvez ensuite Arrêter l'application en sélectionnant la fenêtre d'application Visual Studio 2010 et en cliquant sur le bouton Arrêter le débogage :

Conclusion▲
Il s'agit d'un exemple simple d'utilisation des paramètres d'application. Si vous modifiez le texte du titre de la page et que vous appuyez sur back par la suite, le texte du titre de la page changera, ou faites tout simplement basculer la visibilité du titre de la page. Vous pouvez utiliser cet exemple comme base pour la page de paramètres de votre propre application - personnalisez-la !
Liens▲
Remerciements▲
Je tiens ici à remercier Peter Bull de m'avoir autorisé à traduire son tutoriel.
Je remercie tomlev pour sa relecture technique et ses propositions.
Je remercie également FirePrawn pour sa relecture orthographique et ses propositions.

























