2010-10-15 5 views
1

J'ai un contrôle personnalisé incorporé dans un TabItem du TabControl. TabControl est contenu des principales Usercontrol comme suit:Présentation de la portée de liaison de données WPF

<UserControl x:Class="ControlsLibrary.wpf.Alerts.UserControl1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Height="300" Width="300"> 
    <Grid> 
     <TabControl DataContext="{Binding Filter}"> 
      <TabItem> 
       <mc:CustomControl DataContext="{Binding Options}" 
      </TabItem> 
     </TabControl> 
    </Grid> 
</UserControl> 

Ce que je comprends mon contrôle personnalisé héritera DataContext TabControl donc DataContext de mon contrôle personnalisé doit être réglé sur la propriété « Options » de l'objet de filtre qui est DataContext de TabControl. Toutefois, la fenêtre de sortie de Visual Studio indique qu'il recherche des options dans DataContext de UserControl parent.

Même si j'utilise la propriété ElementName de la classe Binding, je ne parviens toujours pas à modifier DataContext de mon contrôle personnalisé, même si la propriété "Filter" de l'élément de données implémente INotifyPropertyChanged.

Qu'est-ce que j'ai manqué?

TIA.

Répondre

0

J'ai vu un problème similaire (mais pas un problème de contrôle onglet, donc mon apologèse si cela ne marche pas) à ce moment et ce que je devais ainsi était de définir le CustomControl comme le modèle de contrôle du TabItem.

<TabControl DataContext="{Binding Filter}"> 
     <TabItem> 
      <TabItem.Template> 
       <ControlTemplate> 
        <mc:CustomControl DataContext="{Binding Options}" /> 
       </ControlTemplate> 
      </TabItem.Template> 
     </TabItem> 
    </TabControl> 

qui a en fait un impact de la logique et le positionnement visuel du CustomControl dans la hiérarchie d'héritage.

Essayez ceci un laissez-moi savoir si cela fonctionne

HTH

+0

Merci pour la réponse, mais cela ne fonctionnera pas pour mon cas comme dans la mise en œuvre effective, mon contrôle personnalisé fait partie d'un contrôle qui est l'enfant à TabItem . –