2010-05-13 2 views
2

pour des raisons fondées sur storabiligty j'ai les objets suivants dans un graphique XAML:WPF: Construire ma propre liste d'articles de pagination ....;)?

  • A WorkArea,
  • contenant WorkSheets,
  • contenant WorkItems

WORKAREA, feuilles de travail sont des instances ItemsControl. Pour commencer: La raison pour laquelle je n'utilise pas d'éléments standard ici est que les miens vont être chargés/sauvegardés - ils représentent un contect d'affaires (en fait la zone de travail d'une application de trading), et je veux qu'ils aient aussi peu d'éléments "excédentaires" que possible. Je ne veux surtout pas être lié aux contrôles au niveau de l'utilisateur qui proviennent d'un tiers et change régulièrement les noms de DLL (pendant les mises à jour - la version majeure est encodée ici) et je ne suis pas sûr de ne pas les remplacer du tout. aller avec mes propres objets "minces".

Le WorkArea correspond à une fenêtre (en fait il y a une WorkAreaWindow qui prendra la WorkArea comme ContentItem

Les feuilles de travail sont censés fonctionner comme un TabControl -. Vous pouvez basculer entre les

Comment faire. Je fais ça?;)

J'ai l'impression qu'avec les mécanismes de création de modèles, je pourrais "visuall" envelopper les feuilles de travail en tant que pages dans un TabControl, mais je suis à peu près totalement perdu sur le comment. Tout le monde peut m'éclairer?

Voici jusqu'où je suis arrivé:

Mon Herarchy est WorkArea -> WorkSheet (s) -> WorkItem (s)

WorkArea devrait être présenté comme un TabControl, avec un onglet par WorkSheet.

WorkArea:

 <local:WorkArea x:Name="WorkArea"> 
      <local:WorkArea.Template> 
       <ControlTemplate> 
        <TabControl> 
         <ItemsPresenter /> 
        </TabControl> 
       </ControlTemplate> 
      </local:WorkArea.Template> 

      <local:WorkArea.ItemTemplate> 
       <DataTemplate> 
        <TabItem Header="{Binding Path=Title}"> 
         <ContentPresenter /> 
        </TabItem> 
       </DataTemplate> 
      </local:WorkArea.ItemTemplate> 
      <local:WorkSheet Title="Markets"> 
       <local:WorkTile local:WorkSheet.Row="2" local:WorkSheet.Column="3"> 
        test-11 

Ce que je peux voir maintenant un TabControl, avec un onglet. Pas de texte, tout le contenu dans un onglet. Quelqu'un a une idée comment diviser cela plus loin?

Répondre

3

Vous devriez lire attentivement l'introduction de Josh Smith à MVVM here et regarder le code source de l'application de démonstration. L'application de démonstration est presque exactement ce que vous demandez. Il génère dynamiquement une interface à onglets basée sur des classes personnalisées pour les données "contacts" à l'aide de modèles de données, d'une liaison de collection observable et de tabcontrol/tabitem. Certaines choses du MVVM et du commandement ne sont peut-être pas votre truc, mais une partie du code fait ce que vous cherchez. Le XAML n'a aucun code derrière. Vous devez simplement définir ce contexte de données de votre fenêtre sur votre instance de classe de zone de travail qui aurait une collection observable de feuilles de calcul qui à son tour disposeront d'une collection observable de workItems et de modèles d'éléments/données.

Questions connexes