2010-10-14 23 views
3

J'ai un TabControl où chaque élément contient un contrôle utilisateur appelé Timeline. Cette "Timeline" a une propriété appelée "Number" qui change pendant l'exécution.Afficher le nombre dynamique dans l'en-tête WPI TabItem

Je souhaite que la propriété "Numéro" soit affichée dans l'en-tête TabItem. Et je n'ai vraiment aucune idée de comment le faire pour être honnête. Ma première pensée est que je dois créer un contrôle personnalisé qui dérive du contrôle TabItem d'origine et créer un DependencyProperty ou quelque chose avec un ControlTemplate personnalisé.

Je sens que je suis assez mal à expliquer cela ...

Un exemple: je veux faire quelque chose comme la troisième image dans le message sur l'URL suivante, mais au lieu de la fermeture bouton, i voulez afficher la propriété "Number" qui change dynamiquement pendant l'exécution!

http://geekswithblogs.net/kobush/archive/2007/04/08/closeabletabitem.aspx

Répondre

3

Si nous avons cette classe:

public class MyItem : INotifyPropertyChanged 
{ 
    public string Title {get; set;} 

    private int number; 
    public int Number 
    { 
     get { return number; } 
     set 
     { 
      number= value; 
      OnPropertyChanged("Number"); 
     } 
    } 
} 

Nous pouvons lier la collection d'éléments à TabControl:

<TabControl ItemsSource="{Binding MyItems}">    
    <TabControl.ItemTemplate> 
     <DataTemplate>      
      <StackPanel Orientation="Horizontal">        
       <TextBlock Text="{Binding Title}"/> 
       <TextBlock Text="{Binding Number}"/> 
      </StackPanel>       
     </DataTemplate> 
    </TabControl.ItemTemplate> 
    <TabControl.ContentTemplate> 
     <DataTemplate> 
      <my:TimeLine Number="{Binding Number, Mode=TwoWay}" /> 
     </DataTemplate> 
    </TabControl.ContentTemplate> 
</TabControl>