2010-11-24 5 views
0

J'ai une classe avec une méthode statique qui renvoie un dictionnaire. La signature de la méthode est la suivante: public static Dictionary<int, string> CodeLookup<T>() where T : EntityCodeBaseWPF - Comment lier une méthode générique en XAML?

En ce moment, j'utilise cette méthode pour se lier à mes comboboxes dans le code derrière, comme ceci: this.cboState.ItemsSource = CodeCache.CodeLookup<StateCode>();

Est-ce que quelqu'un s'il vous plaît pouvoir pointez-moi dans la bonne direction pour le faire en XAML afin que je puisse retirer ce genre de choses de mon codebehind?

Merci,
Sonny

+0

C'était l'une de mes caractéristiques les plus recherchées. Ces jours-ci, j'utilise un ViewModel pour exposer la fonction en tant que propriété en lecture seule. –

+0

@Jon, parfois c'est pratique pour le faire, mais je pense que cela rend le modèle View trop dépendant de l'implémentation backend. – xandy

Répondre

4

ne lie pas directement à une méthode particulière. Vous devriez créer une propriété et la lier à cela.

public Dictionary<int, string> Code { 
    get { return CodeCache.CodeLookup<StateCode>(); } 
} 
+0

+1 si vous supprimez le: après avoir obtenu :) –

+0

erreur si stupide! – xandy

0

semble que vous ne pouvez pas le faire pour des méthodes génériques

more info

0

Voici une propriété dans mon ViewModel:

public ObservableCollection<Contact> AllContacts 
    { 
     get { return _applicationViewModel.CurrentContacts; } 
    } 

Et voici mon XAML:

<ListView Margin="5" ItemsSource="{Binding Path=AllContacts}"> 
     <ListView.View> 
      <GridView> 
       <GridViewColumn Header="Last Name" DisplayMemberBinding="{Binding Path=LastName}" /> 
       <GridViewColumn Header="First Name" DisplayMemberBinding="{Binding Path=FirstName}" /> 
       <GridViewColumn Header="Work Phone" DisplayMemberBinding="{Binding Path=OfficePhone, Converter={StaticResource phoneConverter}}" /> 
       <GridViewColumn Header="Cell Phone" DisplayMemberBinding="{Binding Path=CellPhone, Converter={StaticResource phoneConverter}}" /> 
       <GridViewColumn Header="Email Address" DisplayMemberBinding="{Binding Path=PrimaryEmail}" /> 
      </GridView> 
     </ListView.View> 
    </ListView> 

Il suffit de définir le DataContext à ViewModel et vous obtenez tout ce dont vous avez besoin. Consultez le modèle MVVM pour plus d'informations.

Il existe des moyens de lier une méthode statique, mais si tout ce que vous faites est de base de données, alors c'est un peu exagéré. Jetez un oeil à Actions si vous êtes intéressé.

Questions connexes