2009-07-27 12 views
0

Ich habe eine Anforderung, die basierend auf dem Benutzer, der sich bei meiner Anwendung angemeldet hat, eine andere Ansicht anzeigen muss. Wie kann ich dies mit Datatemplates erreichen?Dynamische Datatemplate in WPF

Danke, Jithu

+0

Hallo, könnten Sie etwas genauer sein? Ist dies ein Windows-Benutzerkonto oder ein anwendungsspezifisches Konto (dh verwaltet Ihre Anwendung eine Liste von Benutzern)? Gibt es eine bestimmte Eigenschaft des Kontos, das Sie verwenden, um die Ansicht zu bestimmen? Welche Art von Sicht/Kontrolle meinst du? –

Antwort

0

Sagen Sie Resource Wörterbücher in der Wurzel Ihrer WPF-Projekt wie diese für jede Benutzergruppe/Typ haben:

  • UserOneResources.xaml
  • UserTwoResources.xaml
  • ...

Das enthält DataTemplates :

<!-- UserOneResources.xaml --> 
<DataTemplate DataType="{x:Type s:String}"> 
    <TextBlock Text="{Binding .}" /> 
</DataTemplate> 

<!-- UserTwoResources.xaml --> 
<DataTemplate DataType="{x:Type s:String}"> 
    <TextBox Text="{Binding .}" /> 
</DataTemplate> 

Dann im Konstruktor Ihrer App.xaml.cs können Sie entsprechende Ressourcenverzeichnis auswählen, für den aktuellen Benutzer-Typ wie folgt aus:

public App() 
{ 
    string resourceDictionaryToUse; 

    if (user.Type = UserType.One) 
    { 
     resourceDictionaryToUse = "UserOneResources.xaml"; 
    } 
    else 
    { 
     resourceDictionaryToUse = "UserTwoResources.xaml"; 
    } 

    var rd = new ResourceDictionary() { Source = new Uri("pack://application:,,,/" + resourceDictionaryToUse) }; 

    this.Resources.MergedDictionaries.Add(rd); 
} 

Hoffnung, das hilft.

Verwandte Themen