Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.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中创建类似于Windows桌面应用程序的边栏弹出按钮_Wpf_Sidebar - Fatal编程技术网

在WPF中创建类似于Windows桌面应用程序的边栏弹出按钮

在WPF中创建类似于Windows桌面应用程序的边栏弹出按钮,wpf,sidebar,Wpf,Sidebar,我试图做的是在WPF中创建一个桌面应用程序,它的UI是这样的,一个小图标将保持固定在屏幕左边缘的中心,单击(或者悬停)将滑动打开沿着屏幕左边缘运行的边栏(如google桌面栏)(固定位置,无法移动) 请注意,我所要求的可能像一个appbar,但我不希望桌面图标沿着左边缘移动,就像appbar发生的那样,也就是说,我不希望它占用桌面空间…有人能给我建议一条出路吗 我已经使用实现了一个部分解决方案,但我无法获得幻灯片动画和固定位置来训练类似的东西可以工作: 当然,您可以为侧边栏创建幻灯片动画。这显示

我试图做的是在WPF中创建一个桌面应用程序,它的UI是这样的,一个小图标将保持固定在屏幕左边缘的中心,单击(或者悬停)将滑动打开沿着屏幕左边缘运行的边栏(如google桌面栏)(固定位置,无法移动)

请注意,我所要求的可能像一个appbar,但我不希望桌面图标沿着左边缘移动,就像appbar发生的那样,也就是说,我不希望它占用桌面空间…有人能给我建议一条出路吗


我已经使用实现了一个部分解决方案,但我无法获得幻灯片动画和固定位置来训练

类似的东西可以工作:

当然,您可以为侧边栏创建幻灯片动画。这显示了(部分)透明度和切换原理

XAML:


C#:

private void按钮\u单击(对象发送者,路由目标)
{
if(rect.Visibility==System.Windows.Visibility.Collapsed)
{
rect.Visibility=System.Windows.Visibility.Visible;
(发送者为按钮)。内容=”;
}        
}

基于这个答案和这个网站上的更多答案,我做了一个侧栏,我喜欢这个结果,所以我做了一个回购

您也可以从nuget安装它

这里有一个例子

<materialMenu:SideMenu HorizontalAlignment="Left" x:Name="Menu"
                           MenuWidth="300"
                           Theme="Default"
                           State="Hidden">
        <materialMenu:SideMenu.Menu>
            <ScrollViewer VerticalScrollBarVisibility="Hidden">
                <StackPanel Orientation="Vertical">
                    <Border Background="#337AB5">
                        <Grid Margin="10">
                            <TextBox Height="150" BorderThickness="0" Background="Transparent"
                                VerticalContentAlignment="Bottom" FontFamily="Calibri" FontSize="18"
                                Foreground="WhiteSmoke" FontWeight="Bold">Welcome</TextBox>
                        </Grid>
                    </Border>
                    <materialMenu:MenuButton Text="Administration"></materialMenu:MenuButton>
                    <materialMenu:MenuButton Text="Packing"></materialMenu:MenuButton>
                    <materialMenu:MenuButton Text="Logistics"></materialMenu:MenuButton>
                </StackPanel>
            </ScrollViewer>
        </materialMenu:SideMenu.Menu>
    </materialMenu:SideMenu>

欢迎

FYI:在通用应用程序中,你应该使用
Windows.UI.Xaml.Visibility
而不是
System.Windows.Visibility
你的矩形和按钮不应该有
grid.columns=“0”grid.rows=“0”
?@JPHellemons WPF假设这些值,除非你另有指定。我下载并试用了它。它不工作,导致对象引用问题并进入调试模式。否则,看起来很棒。。。你能修复这个问题并将更改上传到GitHub吗?是的,它有很多问题,我会尽快重写这个组件,我需要在生产项目中使用它,我只是还没到那个阶段。但是我会尽快的,那会很好的。让我知道一旦你有更新的版本,我会喜欢使用它。
private void Button_Click(object sender, RoutedEventArgs e)
{
    if (rect.Visibility == System.Windows.Visibility.Collapsed)
    {
        rect.Visibility = System.Windows.Visibility.Visible;
        (sender as Button).Content = "<";
    }
    else 
    {
        rect.Visibility = System.Windows.Visibility.Collapsed;
        (sender as Button).Content = ">";
    }        
}
<materialMenu:SideMenu HorizontalAlignment="Left" x:Name="Menu"
                           MenuWidth="300"
                           Theme="Default"
                           State="Hidden">
        <materialMenu:SideMenu.Menu>
            <ScrollViewer VerticalScrollBarVisibility="Hidden">
                <StackPanel Orientation="Vertical">
                    <Border Background="#337AB5">
                        <Grid Margin="10">
                            <TextBox Height="150" BorderThickness="0" Background="Transparent"
                                VerticalContentAlignment="Bottom" FontFamily="Calibri" FontSize="18"
                                Foreground="WhiteSmoke" FontWeight="Bold">Welcome</TextBox>
                        </Grid>
                    </Border>
                    <materialMenu:MenuButton Text="Administration"></materialMenu:MenuButton>
                    <materialMenu:MenuButton Text="Packing"></materialMenu:MenuButton>
                    <materialMenu:MenuButton Text="Logistics"></materialMenu:MenuButton>
                </StackPanel>
            </ScrollViewer>
        </materialMenu:SideMenu.Menu>
    </materialMenu:SideMenu>