2009-08-07 4 views
0

Mon présentateur définit sa propre vue:Comment puis-je accéder à mes éléments View via x: Nom de mon présentateur?

public SmartFormPresenter(SmartFormView view) 
{ 
    View = view; 
    View.DataContext = this; 
} 

De l'avis que j'ai un élément avec x: Name = "MainTabControl":

<DockPanel LastChildFill="True"> 
    <TabControl x:Name="MainTabControl" DockPanel.Dock="Top" ItemsSource="{Binding SmartFormAreaPresenters}"> 
     <TabControl.ItemContainerStyle> 
      <Style TargetType="{x:Type TabItem}"> 
       <Setter Property="Header" Value="{Binding Title}"/> 
      </Style>... 

Comment puis-je accéder à cet élément comme Je fais dans le code derrière, quelque chose comme ceci:

PSEUDO-CODE: 

View.Root.Children.MainTabControl.Visibility = Visibility.Collapsed; 

Répondre

0

TabControl mainTabControl = View.FindName("MainTabControl") as TabControl; 
mainTabControl.Visibility = Visibility.Hidden; 
1

Vous pouvez définir une propriété publique dans votre vue qui exposera le champ privé. Ou mieux, ne le faites pas et définissez une certaine propriété abstraite dans votre vue, comme "IsViewTabbed" ou sth comme ceci, qui résumera le code d'interface utilisateur hors du présentateur.

+0

Si je faisais un modèle MVVM, je devrais * avoir * pour extraire une propriété. Je comprends que c'est un avantage d'avoir un Presenter au lieu d'un ViewModel: que le présentateur connaisse intimement sa vue, de sorte que vous avez la possibilité d'atteindre et de modifier les choses manuellement si nécessaire. –

Questions connexes