Bon je pense avoir peut être une solution, utiliser des fichiers Settings.
Je crois que c'est non éditable de l'extérieur (donc assez sécurisé), possibilité de les sauvegarder suite à une modification, ...
Qu'en pensez-vous ?
Bonne solution ou il y a mieux ?
edit : petite question avec les MarkupExtension
J'ai une classe Class qui possède une propriété stockant un objet qui est en fait un fichier Settings.
1 2 3 4 5 6
| protected Object _obj = SettingsType1.Default;
public Object obj
{
get { return _obj; }
set { _obj = value; OnPropertyChanged("obj"); }
} |
En fonction de mon utilisateur, je change la valeur de cette objet afin qu'il bascule entre SettingsType1 et SettingsType2
Je l'utilise ainsi dans mon Xaml
Text="{Binding Source={StaticResource Class}, Path=obj.MyKey}
J'ai voulu tester une markup extension pour simplifier l'écriture. Ca donne :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| [MarkupExtensionReturnType(typeof(string))]
public class MyExtension : MarkupExtension
{
public string key { get; set; }
public MyExtension()
{
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
Class lvm = ((Class)Application.Current.Resources["loc"]);
if (lvm.obj is SettingsType1)
return ((SettingsType1)lvm.obj).Properties[key].DefaultValue.ToString();
else
return ((SettingsType2)lvm.obj).Properties[key].DefaultValue.ToString();
}
} |
Voilà en gros le principe...
Appelé ainsi dans mon xaml
Text="{root:MyExtension key=MyKey}"
Seul, hic, lorsque je change la propriété obj de ma classe (branchement sur un autre fichier Setting), la mise à jour du binding n'est pas effective...
Quelqu'un aurait-il une idée pour me dépanner ?
Par avance, merci !!
@+
Partager