在WPF中创建类似于Windows桌面应用程序的边栏弹出按钮
我试图做的是在WPF中创建一个桌面应用程序,它的UI是这样的,一个小图标将保持固定在屏幕左边缘的中心,单击(或者悬停)将滑动打开沿着屏幕左边缘运行的边栏(如google桌面栏)(固定位置,无法移动) 请注意,我所要求的可能像一个appbar,但我不希望桌面图标沿着左边缘移动,就像appbar发生的那样,也就是说,我不希望它占用桌面空间…有人能给我建议一条出路吗在WPF中创建类似于Windows桌面应用程序的边栏弹出按钮,wpf,sidebar,Wpf,Sidebar,我试图做的是在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>