2010-08-18 5 views
4

Je rencontre des problèmes avec la liaison WPF.
J'ai un ensemble avec des propriétés const dans la classe Values, qui correspondent aux colonnes de datatable. Je veux lier la valeur d'une colonne à un TextBlock en utilisant la propriété const pour spécifier la colonne à un ListView ItemTemplate comme ci dans le code:Liaison avec des propriétés statiques dans ListView ItemTemplate

xmlns:C="clr-namespace:WPFApplication1.Entities;assembly=WPFApplication1"> 
    <Grid> 
    <ListView> 
    <ListView.ItemTemplate> 
      <DataTemplate> 
      <TextBlock Text="{Binding {x:Static C:Values.FieldCode}}" /> /*<- Don't work*/ 
      /*Works like this: <TextBlock Text="{Binding [CODE]}" />*/ 
      </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 
    </Grid> 

Si j'utilise la liaison avec la propriété statique I je suis pas en mesure de montrer la valeur dans le datarow mais si j'utilise la liaison comme ceci [CODE] je suis capable de montrer la valeur.

Qu'est-ce qui s'appelle? Des indices?

Merci d'avance.

Répondre

1

le texte en italique est incorrect, s'il vous plaît lire de EDIT1:
Il est impossible de se lier aux propriétés statiques. La liaison a toujours besoin d'une instance de la classe. Il est possible par instanciation de la classe en tant que ressource de dans le code sous-jacent et définir cette classe comme datacontext

EDIT1:

Ajouter une propriété statique de type

public static string FieldCode = "Code"; 
public static PropertyPath FieldCodePath = new PropertyPath(FieldCode); 

Modifier la liaison à la liaison ci-dessous:

<TextBlock Text="{Binding Path={x:Static C:Values.FieldCodePath}, IsAsync=true}" /> 

J'espère que cela aide

+0

Le datacontext Listview est un Datatable, le dépôt statique est que le nom de la colonne que je avoir spécifié dans une classe. Mon but n'est pas d'utiliser le nom de colonne lui-même mais une propriété const d'une classe qui est le nom de la colonne. Je suis capable de faire en dehors du ItemTemplate. donc je pense que le problème est la liaison et l'accès au champ statique à l'intérieur du ItemTemplate. Des idées? – Paulo

+0

Est-ce que je vous comprends correctement si je pense que vous souhaitez définir le chemin de la liaison à la propriété statique qui référence le nom de la colonne au lieu de mettre le nom de la colonne dans le code en tant que chaîne? –

+0

Oui c'est wright – Paulo

3

Vous devez utiliser votre propriété statique comme source, pas le chemin, qui est l'attribut par défaut pour la liaison:

{Binding Source={x:Static C:Values.FieldCode}} 
Questions connexes