对于Vuetify:如何将v-navigation-drawer放在v-app-bar下方感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍vue页面中嵌入本地html页面,并为您提供关于@rea
对于Vuetify:如何将 v-navigation-drawer 放在 v-app-bar 下方感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍vue页面中嵌入本地html页面,并为您提供关于@ react-navigation / drawer vs react-navigation-drawer、Android Drawer - 使用 Navigation.findNavController() 导航到多个片段、Android Navigation Drawer 甚至不调用 public boolean onNavigationItemSelected 方法、C# WPF 抽屉效果实现(C# WPF Material Design UI: Navigation Drawer & PopUp Menu)的有用信息。
本文目录一览:- Vuetify:如何将 v-navigation-drawer 放在 v-app-bar 下方(vue页面中嵌入本地html页面)
- @ react-navigation / drawer vs react-navigation-drawer
- Android Drawer - 使用 Navigation.findNavController() 导航到多个片段
- Android Navigation Drawer 甚至不调用 public boolean onNavigationItemSelected 方法
- C# WPF 抽屉效果实现(C# WPF Material Design UI: Navigation Drawer & PopUp Menu)
Vuetify:如何将 v-navigation-drawer 放在 v-app-bar 下方(vue页面中嵌入本地html页面)
如何解决Vuetify:如何将 v-navigation-drawer 放在 v-app-bar 下方
https://vuetifyjs.com/en/components/application/#application-components 处的文档提到可以将 v-navigation-drawer 配置为显示在 v-app-bar 下方(而不是旁边),但它们似乎并未解释如何实际执行此操作。
这是我正在寻找的布局(v-app-bar 跨越整个窗口宽度,v-navigation-drawer 位于 v-app-bar 下方):
我如何配置 v-navigation-bar 来呈现这样的效果?
我当前的代码如下所示:
<v-app>
<v-system-bar app height="30" color="primary">The system bar</v-system-bar>
<v-app-bar app color="secondary" dense dark>
The application bar
</v-app-bar>
<v-navigation-drawer app>
<p>Navigation drawer</p>
</v-navigation-drawer>
<v-main>
<v-container>
<router-view></router-view>
</v-container>
</v-main>
<v-footer app>The footer</v-footer>
<v-bottom-navigation app color="secondary">The bottom navigation</v-bottom-navigation>
</v-app>
它是这样呈现的(注意导航抽屉在应用栏旁边,而不是在应用栏下方)
解决方法
您需要将 clipped-left
道具添加到您的 v-app-bar
并将 clipped
道具添加到您的 v-navigation-drawer
。
@ react-navigation / drawer vs react-navigation-drawer
如何解决@ react-navigation / drawer vs react-navigation-drawer
以下两个导入是否等同于react导航抽屉?
React Navigation 5.x Drawer处的本机文档使用第二种导入方式。
import { createDrawerNavigator } from ''react-navigation-drawer'';
import { createDrawerNavigator } from ''@react-navigation/drawer'';
解决方法
首次导入2.5.2版,请检查npm https://www.npmjs.com/package/react-navigation-drawer
import { createDrawerNavigator } from ''react-navigation-drawer'';
版本5 https://www.npmjs.com/package/@react-navigation/drawer的第二次导入
import { createDrawerNavigator } from ''@react-navigation/drawer'';
在节点模块中具有@ react-navigation / drawer的查找器
Android Drawer - 使用 Navigation.findNavController() 导航到多个片段
如何解决Android Drawer - 使用 Navigation.findNavController() 导航到多个片段
我不知道我这样做是否正确。 我在 Android Studio 中使用了导航抽屉模板并成功浏览了 3 个菜单选项。 我所做的是为我添加的所有菜单,否则下一个片段将显示什么。 我觉得这种方法有点难,特别是我需要添加更多菜单。
它们是导航片段的更好方法吗?提前致谢。
MainActivity.java
<div id="item" class="d-none"></div>
mobile_navigation.xml
@Override
public boolean onNavigationItemSelected(MenuItem item) {
String title = getSupportActionBar().getTitle().toString();
switch (item.getItemId()) {
case R.id.nav_home:
if(title.equals(getString(R.string.title_status))) {
Navigation.findNavController(this,R.id.nav_host_fragment).navigate(R.id.action_status_to_home_fragment);
} else if(title.equals(getString(R.string.title_gallery))) {
Navigation.findNavController(this,R.id.nav_host_fragment).navigate(R.id.action_galley_to_home_fragment);
}
break;
case R.id.nav_status:
if(title.equals(getString(R.string.title_home))) {
Navigation.findNavController(this,R.id.nav_host_fragment).navigate(R.id.action_home_to_status_fragment);
} else if(title.equals(getString(R.string.title_gallery))) {
Navigation.findNavController(this,R.id.nav_host_fragment).navigate(R.id.action_galley_to_status_fragment);
}
break;
case R.id.nav_gallery:
if(title.equals(getString(R.string.title_home))) {
Navigation.findNavController(this,R.id.nav_host_fragment).navigate(R.id.action_home_to_gallery_fragment);
} else if(title.equals(getString(R.string.title_status))) {
Navigation.findNavController(this,R.id.nav_host_fragment).navigate(R.id.action_status_to_gallery_fragment);
}
break;
}
item.setChecked(true);
drawer.closeDrawers();
return true;
}
解决方法
使用相同的id:
-
id
在导航 xml 文件中的片段标签中定义 -
id
在菜单 xml 文件中定义
在您的 mobile_navigation.xml
文件中,您使用 "@+id/nav_home"
作为主片段。在您的 menu.xml 文件中,将主菜单的 id 设为 "@+id/nav_home"
如果菜单文件和导航文件中的两个 id 相同,它将自动导航到片段。我们不需要做任何样板代码。
Android Navigation Drawer 甚至不调用 public boolean onNavigationItemSelected 方法
如何解决Android Navigation Drawer 甚至不调用 public boolean onNavigationItemSelected 方法
每当我运行这个应用程序时,一切都很好。但是当我点击抽屉选项时没有任何反应。当我调试时,我意识到 onNavigationItemSelected 方法甚至没有被系统调用。但是当我在 onCreate 方法中提交我的片段事务时,一切正常。 这里是 activiy.java
ublic class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener{
DrawerLayout drawerLayout;
ActionBarDrawerToggle toggle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id._toolbar);
setSupportActionBar(toolbar);
NavigationView navigationView = findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
drawerLayout = findViewById(R.id.drawerlayout);
toggle = new ActionBarDrawerToggle(this,drawerLayout,R.string.nav_opened,R.string.nav_closed);
drawerLayout.addDrawerListener(toggle);
Objects.requireNonNull(getSupportActionBar()).setdisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
displayView(R.id.nav_home);
}
@Override
protected void onPostCreate(@Nullable Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
toggle.syncState();
}
@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
super.onConfigurationChanged(newConfig);
toggle.onConfigurationChanged(newConfig);
}
@Override
public boolean onoptionsItemSelected(@NonNull MenuItem item) {
if(toggle.onoptionsItemSelected(item))
return true;
return super.onoptionsItemSelected(item);
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
displayView(item.getItemId());
return true;
}
@Override
public void onBackpressed() {
if(drawerLayout.isDrawerOpen(GravityCompat.START))
drawerLayout.closeDrawer(GravityCompat.START);
else
super.onBackpressed();
}
public void displayView(int viewId) {
Fragment fragment = null;
String title = getString(R.string.app_name);
switch (viewId) {
case R.id.nav_home:
//fragment = new HomeFragment();
break;
case R.id.nav_search:
fragment = new SearchFragment();
break;
case R.id.nav_list:
//fragment = new EatenListFragment();
break;
case R.id.nav_graph:
fragment = new SevendayGraphFragment();
break;
case R.id.nav_settings:
//fragment = new SettingsFragment();
break;
}
if (fragment != null) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.content_frame,fragment);
ft.commit();
}
// set the toolbar title
if (getSupportActionBar() != null) {
getSupportActionBar().setTitle(title);
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawerlayout);
drawer.closeDrawer(GravityCompat.START);
}
}
这里是活动的xml文件
<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawerlayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:openDrawer="start"
tools:context=".MainActivity">
<include layout="@layout/appbar"
android:layout_height="match_parent"
android:layout_width="match_parent"/>
<com.google.android.material.navigation.NavigationView
android:id="@+id/nav_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="start"
app:headerLayout="@layout/nav_header"
app:menu="@menu/activity_main_drawer">
</com.google.android.material.navigation.NavigationView>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent" android:id="@+id/content_frame"/>
<androidx.fragment.app.FragmentContainerView
android:id="@+id/fragment_container_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.drawerlayout.widget.DrawerLayout>
解决方法
对于导航抽屉
MainActivity.java
public class MainActivity extends AppCompatActivity {
private AppBarConfiguration mAppBarConfiguration;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
DrawerLayout drawer = findViewById(R.id.drawer_layout);
NavigationView navigationView = findViewById(R.id.nav_view);
// Passing each menu ID as a set of Ids because each
// menu should be considered as top level destinations.
mAppBarConfiguration = new AppBarConfiguration.Builder(
R.id.nav_home,R.id.nav_gallery,R.id.nav_slideshow)
.setDrawerLayout(drawer)
.build();
NavController navController = Navigation.findNavController(this,R.id.nav_host_fragment);
NavigationUI.setupActionBarWithNavController(this,navController,mAppBarConfiguration);
NavigationUI.setupWithNavController(navigationView,navController);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main,menu);
return true;
}
@Override
public boolean onSupportNavigateUp() {
NavController navController = Navigation.findNavController(this,R.id.nav_host_fragment);
return NavigationUI.navigateUp(navController,mAppBarConfiguration)
|| super.onSupportNavigateUp();
}
} 在布局中
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start">
<include
layout="@layout/app_bar_main"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<com.google.android.material.navigation.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer" />
</androidx.drawerlayout.widget.DrawerLayout>
app_bar_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/Theme.NavigationDrawerApp.AppBarOverlay">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/Theme.NavigationDrawerApp.PopupOverlay" />
</com.google.android.material.appbar.AppBarLayout>
<include layout="@layout/content_main" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
app:srcCompat="@android:drawable/ic_dialog_email" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
content_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:showIn="@layout/app_bar_main">
<fragment
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:navGraph="@navigation/mobile_navigation" />
</androidx.constraintlayout.widget.ConstraintLayout>
nav_header_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="@dimen/nav_header_height"
android:background="@drawable/side_nav_bar"
android:gravity="bottom"
android:orientation="vertical"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:theme="@style/ThemeOverlay.AppCompat.Dark">
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/nav_header_desc"
android:paddingTop="@dimen/nav_header_vertical_spacing"
app:srcCompat="@mipmap/ic_launcher_round" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/nav_header_vertical_spacing"
android:text="@string/nav_header_title"
android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
</LinearLayout>
在菜单中
activity_main_drawer.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:showIn="navigation_view">
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_home"
android:icon="@drawable/ic_menu_camera"
android:title="@string/menu_home" />
<item
android:id="@+id/nav_gallery"
android:icon="@drawable/ic_menu_gallery"
android:title="@string/menu_gallery" />
<item
android:id="@+id/nav_slideshow"
android:icon="@drawable/ic_menu_slideshow"
android:title="@string/menu_slideshow" />
</group>
</menu>
,
我自己解决了。在 activity_main.xml 文件中,我将 NavigationView 块放在 FrameLayout 和 FragmentContainerView 块下。在网上大多数人说把它放在 LinearLayout 下,但由于我在 xml 中没有线性布局,我认为这对我来说没有意义。
C# WPF 抽屉效果实现(C# WPF Material Design UI: Navigation Drawer & PopUp Menu)
时间如流水,只能流去不流回!
点赞再看,养成习惯,这是您给我创作的动力!
本文 Dotnet9 https://dotnet9.com 已收录,站长乐于分享 dotnet 相关技术,比如 Winform、WPF、ASP.NET Core 等,亦有 C++ 桌面相关的 Qt Quick 和 Qt Widgets 等,只分享自己熟悉的、自己会的。
一、先看效果:
二、本文背景
有网友给站长 Dotnet9 留言:“WPF 中能否实现 UWP 中 SplitView 效果,即抽屉效果吗?” Dotnet9 记得国外开源 C# WPF 控件库 MaterialDesignInXaml 中有这种效果,可以查看本站写的推荐文章:MaterialDesignInXaml 控件介绍,站长也是个喜欢码砖的人,对代码是很感兴趣的,遂 Google 了一个 YouTube 视频敲出本文实现的代码,希望对他和您有用。
三、代码实现
站长使用.Net Core 3.1 创建的 WPF 工程,创建 PopUpAndNav 解决方案后,需要添加两个 Nuget 库:MaterialDesignThemes 和 MaterialDesignColors。
添加 Material 两个库
工程比较简单,主要就是演示窗口 MainWindow:
解决方案结构
代码不多,我就全部贴上代码吧。
添加 MaterialDesignInXaml 样式:App.xaml
<Application x:Class="PopUpAndNav.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:PopUpAndNav"
StartupUri="MainWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Light.xaml"/>
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml"/>
<ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Primary/MaterialDesignColor.Blue.xaml"/>
<ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Accent/MaterialDesignColor.Indigo.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
演示窗口 MainWindow.xaml 代码,使用简单的自定义窗口,看效果图,有右上角的标题栏菜单及左上角的抽屉菜单:
<Window x:Class="PopUpAndNav.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:PopUpAndNav"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
mc:Ignorable="d" Foreground="White"
Title="MainWindow" Height="600" Width="1080" ResizeMode="NoResize" WindowStartupLocation="CenterScreen" WindowStyle="None">
<Window.Resources>
<Storyboard x:Key="MenuOpen">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Width)" Storyboard.TargetName="GridMenu">
<EasingDoubleKeyFrame KeyTime="0" Value="60"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="200"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
<Storyboard x:Key="MenuClose">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Width)" Storyboard.TargetName="GridMenu">
<EasingDoubleKeyFrame KeyTime="0" Value="200"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="60"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</Window.Resources>
<Window.Triggers>
<EventTrigger RoutedEvent="ButtonBase.Click" SourceName="ButtonOpenMenu">
<BeginStoryboard Storyboard="{StaticResource MenuOpen}"/>
</EventTrigger>
<EventTrigger RoutedEvent="ButtonBase.Click" SourceName="ButtonCloseMenu">
<BeginStoryboard Storyboard="{StaticResource MenuClose}"/>
</EventTrigger>
</Window.Triggers>
<Grid Background="LightGray">
<Grid x:Name="GridTitle" Height="60" VerticalAlignment="Top" Background="#FF1368BD" MouseDown="GridTitle_MouseDown">
<TextBlock Text="C# WPF 抽屉效果" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="22"/>
<StackPanel VerticalAlignment="Center" Orientation="Horizontal" HorizontalAlignment="Right">
<TextBlock Text="Dotnet9.com" VerticalAlignment="Center" FontSize="18"/>
<materialDesign:PopupBox Foreground="White" Margin="10" PlacementMode="BottomAndAlignRightEdges" StaysOpen="False">
<StackPanel Width="150">
<Button Content="账号"/>
<Button Content="设置"/>
<Button Content="帮助"/>
<Separator/>
<Button x:Name="ButtonPopUpLogout" Content="Logout" Click="ButtonPopUpLogout_Click"/>
</StackPanel>
</materialDesign:PopupBox>
</StackPanel>
</Grid>
<Grid x:Name="GridMenu" Width="60" HorizontalAlignment="Left" Background="#FF1B3861">
<StackPanel>
<Grid Height="150" Background="White">
<Button x:Name="ButtonCloseMenu" Width="60" Height="60" Background="{x:Null}" BorderBrush="{x:Null}" VerticalAlignment="Top" HorizontalAlignment="Right" Visibility="Collapsed" Click="ButtonCloseMenu_Click">
<materialDesign:PackIcon Kind="ArrowLeft" Foreground="#FF1B3861" Width="25" Height="25"/>
</Button>
<Button x:Name="ButtonOpenMenu" Width="60" Height="60" Background="{x:Null}" BorderBrush="{x:Null}" VerticalAlignment="Top" HorizontalAlignment="Right" Click="ButtonOpenMenu_Click">
<materialDesign:PackIcon Kind="Menu" Foreground="#FF1B3861" Width="25" Height="25"/>
</Button>
</Grid>
<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" Foreground="#FF1368BD">
<ListViewItem Height="60">
<StackPanel Orientation="Horizontal">
<materialDesign:PackIcon Kind="ViewDashboard" Width="25" Height="25" Margin="10" VerticalAlignment="Center"/>
<TextBlock Text="首页" VerticalAlignment="Center" Margin="20 10"/>
</StackPanel>
</ListViewItem>
<ListViewItem Height="60">
<StackPanel Orientation="Horizontal">
<materialDesign:PackIcon Kind="Pencil" Width="25" Height="25" Margin="10" VerticalAlignment="Center"/>
<TextBlock Text="创建" VerticalAlignment="Center" Margin="20 10"/>
</StackPanel>
</ListViewItem>
<ListViewItem Height="60">
<StackPanel Orientation="Horizontal">
<materialDesign:PackIcon Kind="Ticket" Width="25" Height="25" Margin="10" VerticalAlignment="Center"/>
<TextBlock Text="售票" VerticalAlignment="Center" Margin="20 10"/>
</StackPanel>
</ListViewItem>
<ListViewItem Height="60">
<StackPanel Orientation="Horizontal">
<materialDesign:PackIcon Kind="Message" Width="25" Height="25" Margin="10" VerticalAlignment="Center"/>
<TextBlock Text="信息" VerticalAlignment="Center" Margin="20 10"/>
</StackPanel>
</ListViewItem>
<ListViewItem Height="60">
<StackPanel Orientation="Horizontal">
<materialDesign:PackIcon Kind="GithubBox" Width="25" Height="25" Margin="10" VerticalAlignment="Center"/>
<TextBlock Text="GitHub" VerticalAlignment="Center" Margin="20 10"/>
</StackPanel>
</ListViewItem>
</ListView>
</StackPanel>
</Grid>
</Grid>
</Window>
后台 MainWindow.xaml.cs,主要是处理窗体关闭事件及抽屉菜单的展开与折叠:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace PopUpAndNav
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void ButtonPopUpLogout_Click(object sender, RoutedEventArgs e)
{
Application.Current.Shutdown();
}
private void ButtonOpenMenu_Click(object sender, RoutedEventArgs e)
{
ButtonOpenMenu.Visibility = Visibility.Collapsed;
ButtonCloseMenu.Visibility = Visibility.Visible;
}
private void ButtonCloseMenu_Click(object sender, RoutedEventArgs e)
{
ButtonOpenMenu.Visibility = Visibility.Visible;
ButtonCloseMenu.Visibility = Visibility.Collapsed;
}
private void GridTitle_MouseDown(object sender, MouseButtonEventArgs e)
{
DragMove();
}
}
}
四、文章参考
上面的代码是 Dotnet9 看 Disign com WPF 大神视频手敲的,下面是大神 youtube 地址及本实例学习视频。
参考:
Design com WPF : https://www.youtube.com/watch?v=YQ1EJJZBHyE
除非注明,文章均由 Dotnet9 整理发布,欢迎转载。
如有所收获,请大力转发(能点赞及推荐那是极好的);如觉小编写文不易,欢迎给 Dotnet9 站点打赏,小编谢谢了;谢谢大家对 dotnet 技术的关注和支持 。
今天关于Vuetify:如何将 v-navigation-drawer 放在 v-app-bar 下方和vue页面中嵌入本地html页面的介绍到此结束,谢谢您的阅读,有关@ react-navigation / drawer vs react-navigation-drawer、Android Drawer - 使用 Navigation.findNavController() 导航到多个片段、Android Navigation Drawer 甚至不调用 public boolean onNavigationItemSelected 方法、C# WPF 抽屉效果实现(C# WPF Material Design UI: Navigation Drawer & PopUp Menu)等更多相关知识的信息可以在本站进行查询。
本文标签: