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;

私の質問は、スタイルとセッターを使用してこれを行う方法と、ビジュアル ツリーで名前のない要素を見つける方法です。

編集

コードビハインド

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>
4

1 に答える 1

0

コントロールはサードパーティのものであり、おそらくテンプレートのオーバーライドのために封印されているため、これにはビジュアルツリーヘルパー(現在使用しているように)を使用する必要があります。

于 2012-05-11T10:51:14.667 に答える