`
topcss
  • 浏览: 99595 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
文章分类
社区版块
存档分类
最新评论

silverlight 侧边栏折叠菜单

 
阅读更多

 

xaml文件

 

 

        <!-- splitter控件 -->
        <StackPanel x:Name="SplitterStackPanel" Style="{StaticResource SplitterStackPanelStyle}"
                        Loaded="SplitterStackPanel_Loaded" SizeChanged="SplitterStackPanel_SizeChanged">

            <!-- Left -->
            <Grid Style="{StaticResource SplitterC1GridStyle}">
                <!-- TODO -->
                <Button x:Name="Btn_Test" Content="btn" Click="Button_Click" 
                        Margin="20,6,0,0" Height="25" 
                        VerticalAlignment="Top" HorizontalAlignment="Left" Width="130" />
            </Grid>

            <!-- Split -->
            <StackPanel Style="{StaticResource SplitterC2StackPanelStyle}">
                <HyperlinkButton Name="Btn_Splitter" Click="Btn_Splitter_Click"
                                 IsTabStop="False" VerticalAlignment="Center" Padding="0">
                    <Image Name="SplitIcon" Height="35" Width="7" />
                </HyperlinkButton>
            </StackPanel>

            <!-- Right -->
            <Grid Style="{StaticResource SplitterC3GridStyle}">
                <!-- TODO -->
                <navigation:Frame x:Name="ChildContentFrame" />
            </Grid>
        </StackPanel>

 

 

后台代码:

 

        private void Btn_Splitter_Click(object sender, RoutedEventArgs e)
        {
            double ContainerWidth = SplitterStackPanel.ActualWidth;

            Grid NavPanel = SplitterStackPanel.Children[0] as Grid;
            StackPanel SplitPanel = SplitterStackPanel.Children[1] as StackPanel;
            Grid ContentPanel = SplitterStackPanel.Children[2] as Grid;

            if (NavPanel.Visibility.Equals(Visibility.Collapsed))
            {
                NavPanel.Visibility = Visibility.Visible;
                ContentPanel.Width = ContainerWidth - SplitPanel.ActualWidth - NavPanel.ActualWidth;
                SplitIcon.Source = new BitmapImage(new Uri("/CQDSCC;component/Images/mini-left.png", UriKind.Relative));
            }
            else
            {
                NavPanel.Visibility = Visibility.Collapsed;
                ContentPanel.Width = ContainerWidth - SplitPanel.ActualWidth;
                SplitIcon.Source = new BitmapImage(new Uri("/CQDSCC;component/Images/mini-right.png", UriKind.Relative));
            }
            SplitPanel.Height = SplitterStackPanel.ActualHeight;
        }

        private void SplitterStackPanel_Loaded(object sender, RoutedEventArgs e)
        {
            InitialSplitterSize();
        }

        DateTime oldTime = DateTime.MinValue;

        private void SplitterStackPanel_SizeChanged(object sender, SizeChangedEventArgs e)
        {
            TimeSpan sjc = DateTime.Now.Subtract(oldTime);
            if (sjc.TotalSeconds > 1)
            {
                InitialSplitterSize();
                oldTime = DateTime.Now;
            }
        }

        private void InitialSplitterSize()
        {
            double ContainerWidth = SplitterStackPanel.ActualWidth;

            Grid NavPanel = SplitterStackPanel.Children[0] as Grid;
            StackPanel SplitPanel = SplitterStackPanel.Children[1] as StackPanel;
            Grid ContentPanel = SplitterStackPanel.Children[2] as Grid;

            if (NavPanel.Visibility.Equals(Visibility.Collapsed))
            {
                ContentPanel.Width = ContainerWidth - SplitPanel.ActualWidth;
                SplitIcon.Source = new BitmapImage(new Uri("/CQDSCC;component/Images/mini-right.png", UriKind.Relative));
            }
            else
            {
                ContentPanel.Width = ContainerWidth - SplitPanel.ActualWidth - NavPanel.ActualWidth;
                SplitIcon.Source = new BitmapImage(new Uri("/CQDSCC;component/Images/mini-left.png", UriKind.Relative));
            }
            SplitPanel.Height = SplitterStackPanel.ActualHeight;
        }
 

 

样式文件:

    <!-- Splitter StackPanel-->
    <Style x:Key="SplitterStackPanelStyle" TargetType="StackPanel">
        <Setter Property="Orientation" Value="Horizontal" />
    </Style>
    <Style x:Key="SplitterC1GridStyle" TargetType="Grid">
        <Setter Property="Width" Value="200" />
        <Setter Property="HorizontalAlignment" Value="Left" />
    </Style>
    <Style x:Key="SplitterC2StackPanelStyle" TargetType="StackPanel">
        <Setter Property="VerticalAlignment" Value="Center" />
        <Setter Property="Orientation" Value="Horizontal" />
        <Setter Property="Width" Value="6" />
        <Setter Property="Background" Value="#ffe2e2e2" />
    </Style>
    <Style x:Key="SplitterC3GridStyle" TargetType="Grid">
        <Setter Property="VerticalAlignment" Value="Stretch" />
        <Setter Property="HorizontalAlignment" Value="Stretch" />
    </Style>
 

 

 

  • 大小: 3.5 KB
  • 大小: 3.5 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics