2010-11-05 5 views
0

Je suis confronté à un problème, j'ai une application avec plusieurs fichiers de paramètres mais qui ont exactement les mêmes champs.Liaison dynamique pour les paramètres?

Exemples:

  • Profil1.settings
  • Profil2.settings
  • Profil3.settings

Ce que je voudrais faire dans ma XAML de la fenêtre de réglage est de changer la dynamiquement source de liaison pour chaque profil.

Au moment mon regard contraignant XAML comme ceci:

SelectedValue="{Binding Source={x:Static Local:Properties.Profil1.Default}, Path=CurrentProfil, Mode=TwoWay, UpdateSourceTrigger=Explicit}" 

Mon problème est de savoir comment remplacer le « profil1 » par « Profil2 » sans refaire toute ma Binding un par un pour chaque commande via mon code derrière ? Est-ce possible d'utiliser une variable de roi de réflexion dans la source de liaison XAML et de simplement changer le type de cette variable avec le type Profil1 ou le type Profil2?

Quelqu'un peut-il m'aider?

Merci d'avance.

+0

J'ai quelques indices, en utilisant le type « dynamique » Je peux attribuer différents types de Profil à une variable dynamique et peut récupérer à partir de la mise en il. Cela fonctionne dans le code, mais je ne sais pas comment le faire fonctionner avec la liaison XAML. Si j'essaie de lier une variable de type dynamique dans ma source de liaison, le compilateur me jette une erreur lors de la construction. – Karnalta

Répondre

1

Ce que vous voulez faire est de définir le DataContext de votre fenêtre de paramètres sur le profil approprié. Vous pouvez le faire quand vous voulez, mais en faisant cela, toutes vos liaisons pointeraient vers cet objet. Pour les liaisons fonctionnent comme vous avez maintenant, vous feriez:

<Window x:Class="MyNamespace.MyWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:Local="clr-namespace:MyNamespace" 
     DataContext="{Binding Source={x:Static Local:Properties.Profil1.Default}}"> 

    ... 

    <ComboBox SelectedValue="{Binding Path=CurrentProfil, Mode=TwoWay, UpdateSourceTrigger=Explicit}" /> 
+0

Je ne suis pas au travail jusqu'à lundi mais oui ça ressemble à la solution. Tout ce que je vais devoir faire est de changer le DataContext de ma fenêtre en code par le bon profil et c'est fait. C'est beaucoup plus facile que de travailler avec un objet de type dynamique et une liaison. Je vous remercie. – Karnalta

Questions connexes