2010-06-16 6 views
0

J'espère que quelqu'un ayant une meilleure expérience que moi connaîtra mieux la création d'une fenêtre/d'un ensemble de fenêtres pour afficher des données dans WPF. Voici un petit aperçu de ma tâche:Génération de grands ensembles de fenêtres similaires dans WPF

  • Je recevrai une grande quantité de sortie binaire d'un récepteur. Ceci sera ensuite analysé et saisi en fonction de la signification du bit particulier (c'est-à-dire word1 bit1 = Receiver Status OK ") pour chaque chaîne binaire

  • Les données doivent ensuite être affichées dans une fenêtre simple quelconque au format. Statut du récepteur OK [CheckBox lié à la valeur] ou la vitesse dans la direction X: [TextBlock lié à la valeur]

Les questions sont les suivantes:

  • Il y a environ 60 'messages' uniques qui doivent être affichés lorsque l'utilisateur doit regarder le i Chaque message est d'une longueur différente de mots, chacun avec différentes significations et un nombre différent de champs qui devront être affichés.

Je voudrais savoir comment vous aborderiez cette situation. Je pensais aller à la force brute, une fenêtre par message, mais cela semble très cru. Mon autre pensée était de faire une seule fenêtre standard avec une grille qui était la taille du plus grand message, puis de le remplir avec les TextBlocks nécessaires et autres. Ensuite, je viens de DataBind les clés et les valeurs pour les champs de chaque message, et réduire les champs inutilisés.

Toutes les suggestions seraient grandement appréciées. Merci d'avance.

Répondre

0

Il semble que vous ayez un tas de classes de message concrètes. Si c'est le cas, je créerais un nouveau DataTemplate pour chacun des messages du Window'sResources. Le DataTemplate'sx:Key doit être défini sur le type de la classe qu'il représente. Ensuite, vous définissez le Content du Window à l'instance du message, et il sélectionnera le DataTemplate correct pour le type.

par exemple.

<Window x:Class="MessageTest.MessageWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:lcl="clr-namespace:MessageTest"> 

    <Window.Resources> 
     <DataTemplate x:Key="{x:Type lcl:SimpleMessage}"> 
      <TextBlock Text="{Binding MessageContent}" /> 
     </DataTemplate> 
    </Window.Resources> 

</Window> 

Et lorsque vous créez le Window:

private void MessageRecieved(IMessage message) 
{ 
    var window = new MessageWindow { Content = message }; 
    window.Show(); 
} 
Questions connexes