2010-05-22 9 views

Répondre

1

un modèle commun serait de mettre un DataContext en vous événement chargé, vous supposant que vous voulez lier à un TabControl appelé tabs_control sur votre page:

public MainPage() 
{ 
    InitializeComponent(); 
    Loaded += OnLoaded; 
} 

protected void OnLoaded(object sender, RoutedEventArgs e) 
{ 
    //Initialize tabs collection 
    tab_control.ItemsSource = tabs; 
} 

Il est évident que vous devez remplacer le vous contrôlez réellement souhaitez lier.

EDIT

base sur vos commentaires, ce que vous pouvez faire est tout simplement configurer le contrôle pour le contexte de données, votre XAML de liaison devrait fonctionner. donc au lieu de ci-dessus vous feriez ceci:

protected void OnLoaded(obejct sender, RoutedEventArgs e) 
{ 
    this.DataContext = this; 
} 

alors dans votre XAML vous pouvez le faire:

<TabControl ItemsSource={Binding tabs} ... /> 
+0

merci - je pensais juste que c'était la meilleure pratique pour le faire dans xaml, mais je pense que je vais aller avec la liaison code source d'itemssource alors. – Jakob

0

syntaxe de liaison Utilisons WPF pour XAML.

<YourControl ItemSource="{Binding tabs} /> 

Vous devez également définir la DataContext être un type de contrôle de haut niveau (grille, toile, etc.) qui possède la collection d'onglets (ce type dans le cas où vous ne l'avez pas renommer la classe de votre fenêtre, serait être Window1

Ainsi, par exemple, la combinaison que le fragment XAML ci-dessus.

<Grid DataContext="Window1"> 
.... 
.... 
     <YourControl ItemSource="{Binding tabs} /> 
.... 
.... 
    </Grid> 
+0

désolé, ne savais pas qu'il a obtenu filtré mon XAML. C'est ce que j'ai essayé, mais je n'ai pas montré les bonnes choses. Chose étrange est que si je lie de codebehind. tabcontrol.itemssource = tabs; cela fonctionne bien. Pour la netteté cependant, je n'aime pas la liaison dans le code-derrière – Jakob