2009-08-07 6 views
0

Mein Moderator legt seine eigene Ansicht:Wie kann ich über x: Name von meinem Presenter auf meine View-Elemente zugreifen?

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

Nach Ansicht Ich habe ein Element mit 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>... 

Wie kann ich dieses Element zugreifen, als Ich mache in Code hinter, etwas wie folgt:

PSEUDO-CODE: 

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

Antwort

0

Es gefunden:

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

Sie können in Ihrer Sicht eine öffentliche Eigenschaft definieren, die das private Feld freilegt. Oder besser, tun Sie es nicht und definieren Sie eine abstrakte Eigenschaft in Ihrer Sicht, wie "IsViewTabbed" oder so ähnlich, die UI-Code aus dem Presenter abstrahieren wird.

+0

Wenn ich ein MVVM-Muster machen würde, müsste ich eine Eigenschaft abstrahieren. Ich verstehe, dass dies von Vorteil ist, wenn Sie einen Presenter anstelle eines ViewModel verwenden: dass der Presenter seine Ansicht genau kennt, sodass Sie die Möglichkeit haben, bei Bedarf manuell zu reagieren und Dinge zu ändern. –