Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF滑动面板_Wpf_Wpf Controls - Fatal编程技术网

WPF滑动面板

WPF滑动面板,wpf,wpf-controls,Wpf,Wpf Controls,我想制作一个类似于混合菜单控件的控件: 如图所示,单击资源,菜单将滑出,窗口另一侧的菜单将缩小,并为新的滑动菜单留出空间。在执行任何将其滑回的操作之前,菜单应一直位于该位置。(就像我会把一个按钮放在图片中取消按钮(x)的相同位置) 也不应该像我们使用VS on Blend的工具箱那样,将面板停靠到另一个地方 我该如何实现这一目标?我创建了一个窗口,向您展示如何实现目标。它在窗口的右上方有两个按钮,如果单击每个按钮,红色或黑色边框将展开 <Window x:Class="WpfApplic

我想制作一个类似于混合菜单控件的控件:

如图所示,单击资源,菜单将滑出,窗口另一侧的菜单将缩小,并为新的滑动菜单留出空间。在执行任何将其滑回的操作之前,菜单应一直位于该位置。(就像我会把一个按钮放在图片中取消按钮(x)的相同位置)

也不应该像我们使用VS on Blend的工具箱那样,将面板停靠到另一个地方


我该如何实现这一目标?

我创建了一个窗口,向您展示如何实现目标。它在窗口的右上方有两个按钮,如果单击每个按钮,红色或黑色边框将展开

<Window x:Class="WpfApplicationUpper.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:my="clr-namespace:WpfApplicationUpper" Height="100" Width="200">

<Window.Resources>
    <ControlTemplate x:Key="VerticalExpander" TargetType="{x:Type Expander}">
        <Border Name="ContentBorder"
                Width="0">
            <ContentPresenter />
        </Border>
        <ControlTemplate.Triggers>
            <Trigger Property="IsExpanded"
                     Value="True">
                <Setter TargetName="ContentBorder"
                        Property="Width"
                        Value="Auto" />
            </Trigger>
        </ControlTemplate.Triggers>
    </ControlTemplate>
</Window.Resources>
<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="20" />
    </Grid.ColumnDefinitions>
    <StackPanel Grid.Column="1" Orientation="Vertical">
        <Button Name="B1" Content="T" Click="B1_Click"/>
        <Button Name="B2"
                Content="F" Click="B2_Click"/>
    </StackPanel>
    <DockPanel LastChildFill="True">
        <Grid DockPanel.Dock="Right">
            <Expander Name="MainExpander1"
                      Template="{StaticResource VerticalExpander}"
                      IsExpanded="False">
                <Border Background="Black"
                        Width="50">
                </Border>
            </Expander>
            <Expander Name="MainExpander2"
                      Template="{StaticResource VerticalExpander}"
                      IsExpanded="False"
                      DockPanel.Dock="Right">
                <Border Background="Red"
                        Width="50">
                </Border>
            </Expander>
        </Grid>
        <Border Name="NonSliding"
                Width="100"
                Height="50"
                Background="Green">

        </Border>
    </DockPanel>
</Grid>
</Window>

我在网上找到了一些代码,它们是用于可固定面板的,但它们不能按我想要的方式工作。我还想做一些简单的功能来实现它。你可能想看看MahApps Metro及其弹出控件。我想它很接近你要找的东西@Hardik我更新了我的答案。MainExpander1.IsExpanded=!主扩展器1.i扩展;
    private void B1_Click(object sender, RoutedEventArgs e)
    {
            MainExpander1.IsExpanded = !MainExpander1.IsExpanded;
    }

    private void B2_Click(object sender, RoutedEventArgs e)
    {
        MainExpander2.IsExpanded = !MainExpander2.IsExpanded;
    }