2010-06-20 7 views
1

J'ai plusieurs cas où j'ai une propriété que je veux déclarer en lecture seule, mais je donne aussi quelques explications sur la façon dont elle est calculée/définie en utilisant [Afficher (Description = "")] attribut. Je voudrais le faire dans les métadonnées, si possible, plutôt que de redéfinir dans la forme de données elle-même.RIA services/DataForm: comment utiliser les attributs ReadOnly & Description ensemble

Voici un exemple:

[Display(Description = "Total number of travel hours, calculated as total hrs worked - actual working hrs this month")] 
    public decimal TravelHours 
    { 
     get 
     { 
      return this.TotalHrsWorked - this.ActualWorkedHours; 
     } 
    } 

Ce ne sera pas montrer la description comme DescriptionViewer quand je lie à cette propriété dans un DataForm & DataField.

Il semble que lorsque je définis l'attribut [ReadOnly], il masque le DescriptionViewer, et même le paramètre DescriptionViewerVisibility = Visible dans le fichier xaml ne le modifie toujours pas. De plus, toutes les propriétés calculées (sans setter) semblent avoir cet attribut appliqué par défaut. C'est un peu ennuyeux, car ce sont ceux que je veux vraiment montrer à l'utilisateur de description. La seule façon de contourner cela est de rendre la propriété non seulement en lecture seule et d'ajouter un setter fictif (pour les propriétés calculées). Cela ressemble à un kludge. Y a-t-il un moyen d'afficher le visualiseur de description dataform/datafield sur les propriétés readonly?

Répondre

1

Oui, J'ai rencontré le même problème avant, mais je n'ai pas essayé de gérer. L'attribut d'affichage et les attributs ReadOnly sont scellés, vous ne pouvez pas en hériter. Vous pouvez les envelopper et créer un autre attribut, mais votre groupe de données ne fait pas maintenant ce attribute.So vous ne pouvez pas ...

Peut-être que vous pouvez faire des choses différentes dans ReadOnlyTemplate

 <dataFormToolkit:DataForm.ReadOnlyTemplate> 
      <DataTemplate> 
       <Grid>     
      <dataFormToolkit:DataField Label="{Binding ReadOnlyLabel, 
       Converter=ReadOnlyOrNotConverter}" > 
       <TextBox Text="{Binding Path=ReadOnlyValueEtc, Mode=TwoWay}" /> 
      </dataFormToolkit:DataField> 

espoir aide,

Cordialement!

1
[Display(Order = 6, Name = "CountryLabel", Description = "CountryDescription", 
ResourceType = typeof(EntityDataStrings))] 

EntityDataStrings est un fichier contenant des valeurs de ressources pour "CountryLabel" et "CountryDescription".

Questions connexes