2008-11-27 6 views
2

J'ai créé un contrôle utilisateur (dans le code vb.net) qui contient deux panneaux de quai, un pour le contenu de l'en-tête (appelé HeaderDockPanel) et un autre pour le contenu (appelé RootDockPanel). Les dockPanels sont des propriétés de déférence du contrôle utilisateur.WPF: Comment éditer le contenu d'un DockPanel situé dans un UserControl?

Ces propriétés de dépendance sont déclarés comme suit:

Public Shared ReadOnly RootDockPanelProperty As DependencyProperty = DependencyProperty.Register(_ 
     "RootDockPanel", GetType(DockPanel), GetType(MyUserControl), New PropertyMetadata(_ 
     Nothing)) 

Public Shared ReadOnly HeaderDockPanelProperty As DependencyProperty = DependencyProperty.Register(_ 
      "HeaderDockPanel", GetType(DockPanel), GetType(MyUserControl), New PropertyMetadata(_ 
      Nothing)) 

J'ai essayé de modifier le contenu de ces panneaux de quai comme suit, mais je l'ai eu pas sucess:

<Wpf:EditBaseControl> 
    <Wpf:MyUserControl.HeaderDockPanel> 
     <DockPanel> 
      <Button Content="buttonContent" /> 
      <TextBlock Text="textBlock" /> 
     </DockPanel> 
    </Wpf:MyUserControl.HeaderDockPanel> 
</Wpf:EditBaseControl> 


Comment modifier le contenu d'un DockPanel à l'intérieur d'un UserControl?

Répondre

1

1 Je ne comprends pas votre approche de conception correctement ici. Pourquoi avez-vous besoin d'une propriété Dependancy en tant que DockPanel? Vous pouvez directement référencer le DockPanel dans votre code usercontrol derrière si vous définissez la propriété x: Name dans le XAML et accédez à ce nom par _dockPanel. Accès à la propriété _dockPanel.Children pour manipuler ses enfants,

2 Autre réflexion sur les points de distribution, vous devrez peut-être ajouter les instances DockPanel à Wpf: EditBaseControl en tant qu'événement Content on DependancyPropertyChanged.

3 Si vous voulez essayer lookless moyen (c.-à-WPF Custom control), alors je vous suggère de créer un HeaderedItemsControl à cet effet et mis en ItemsPanel comme DockPanel pour ce contrôle.