2012-05-11 57 views
1

我有一个WPF应用程序中的控件,我需要折叠一个元素的元素没有暴露,所以我需要用Loaded事件这样的代码折叠它。风格与二传手代替代码

Stema.Controls.NavigationPane navPane = (Stema.Controls.NavigationPane)sender; 

DockPanel docPanel =(DockPanel)VisualTreeHelper.GetChild(navPane, 0); 
Border border = (Border)VisualTreeHelper.GetChild(docPanel, 1); 
Grid grid = (Grid)VisualTreeHelper.GetChild(border, 0); 
DockPanel docPanel1 = (DockPanel)VisualTreeHelper.GetChild(grid, 4); 

docPanel1.Visibility = Visibility.Collapsed; 

我的问题,是有办法有风格和setter和如何找到在视觉树unamed元素来做到这一点。

编辑

代码背后

private void NavPane_Loaded(object sender, RoutedEventArgs e) 
     { 


      Stema.Controls.NavigationPane navPane = (Stema.Controls.NavigationPane)sender; 

      DockPanel docPanel =(DockPanel)VisualTreeHelper.GetChild(navPane, 0); 
      Border border = (Border)VisualTreeHelper.GetChild(docPanel, 1); 
      Grid grid = (Grid)VisualTreeHelper.GetChild(border, 0); 
      DockPanel docPanel1 = (DockPanel)VisualTreeHelper.GetChild(grid, 4); 

      docPanel1.Visibility = Visibility.Collapsed; 

     } 

XAML

<s:NavigationPane Loaded="NavPane_Loaded" x:Name="navigationPane" SelectedIndex="0" LargeItems="2" Margin="2,0,0,1" IsMinimized="False" Width="200" DockPanel.Dock="Left" Background="White" > 
      <s:NavigationPaneItem Header="Reportitems" Name="intro" > 

       <ContentControl x:Name="ActionContent" prism:RegionManager.RegionName="{x:Static inf:RegionNames.LeftNavigationRegion}" VerticalAlignment="Stretch" > 


         <ContentControl.Template> 
          <ControlTemplate TargetType="ContentControl"> 

          <ContentPresenter Content="{TemplateBinding Content}" /> 

          <ControlTemplate.Triggers> 
            <Trigger Property="HasContent" Value="false"> 
             <Setter Property="Visibility" Value="Collapsed" /> 
            </Trigger> 
           </ControlTemplate.Triggers> 
          </ControlTemplate> 
         </ContentControl.Template> 
        </ContentControl> 

      </s:NavigationPaneItem> 

     </s:NavigationPane> 
+1

你可以添加更多的应用程序?也许是一个XAML的样本 – RockThunder

回答

0

恐怕你必须使用可视化树助手(就像你使用的是现在)这是因为您的控件是第三方控件,因此可能会因模板覆盖而被封闭。