- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Windows Phone 8 中,我能够使用多个 AppBar,在某些枢轴页面上交换它们,但在 Windows Phone 8.1 中,我不确定如何做到这一点,或者这是否可能。
基本上对于我的场景,我有 3 个数据透视页。每个页面都需要有不同的 CommandBar,因为它需要有不同的控件。
有人能告诉我怎么做吗?
编辑:我用于 Windows Phone 8 的代码:
XAML:
<phone:PhoneApplicationPage.Resources>
<shell:ApplicationBar x:Key="AppBar1" IsVisible="True" IsMenuEnabled="True">
<shell:ApplicationBarIconButton IconUri="/Images/appbar_button1.png" Text="Button 1"/>
<shell:ApplicationBar.MenuItems>
<shell:ApplicationBarMenuItem Text="MenuItem 1"/>
</shell:ApplicationBar.MenuItems>
</shell:ApplicationBar>
<shell:ApplicationBar x:Key="AppBar2" IsVisible="True" IsMenuEnabled="True">
<shell:ApplicationBarIconButton IconUri="/Images/appbar_button1.png" Text="Button 1" />
<shell:ApplicationBarIconButton IconUri="/Images/appbar_button2.png" Text="Button 2" />
<shell:ApplicationBar.MenuItems>
<shell:ApplicationBarMenuItem Text="MenuItem 1" />
<shell:ApplicationBarMenuItem Text="MenuItem 2" />
</shell:ApplicationBar.MenuItems>
</shell:ApplicationBar>
C#:
private void MainPivot_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
switch (MainPivot.SelectedIndex)
{
case 0:
ApplicationBar = this.Resources["AppBar1"] as ApplicationBar;
break;
case 1:
ApplicationBar = this.Resources["AppBar2"] as ApplicationBar;
break;
}
}
基本上在 PivotPage 更改时切换 AppBar。
最佳答案
一个简单的解决方案是使用 XAML 定义您的按钮和 ViewModel(MVVM 模式)来控制这些按钮的可见性,这可以避免在代码中创建按钮和复杂的逻辑来控制显示哪个按钮。
首先,定义所有可能在CommandBar中使用的按钮:
<Page.BottomAppBar>
<CommandBar>
<!--buttons of group1-->
<AppBarButton Icon="Icon1" Label="button1"/>
...
<!--buttons of group2-->
<AppBarButton Icon="Icon2" Label="button2"/>
...
<!--buttons of group3-->
<AppBarButton Icon="Icon3" Label="button3"/>
</CommandBar>
</Page.BottomAppBar>
然后在ViewModel中定义一个属性,比如:
public class PageViewModel : INotifyPropertyChanged
{
...
public int CommandGroup
{
get { return _commandGroup; }
set { _commandGroup = value; NotifyPropertyChanged("CommandGroup"); }
}
}
这个CommandGroup属性用来控制按钮的显示/隐藏,例如设置CommandGroup = 1显示group1中的按钮,隐藏其他组中的按钮,设置CommandGroup = 2显示group2中的按钮和隐藏其他组中的按钮,这里的group1和group2只是逻辑组。
然后定义一个转换器,将 CommandGroup 属性的值转换为 Visibility:
public class CommandGroupToVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
return (System.Convert.ToInt32(value) == System.Convert.ToInt32(parameter)) ? Visibility.Visible : Visibility.Collapsed;
}
}
最后,将此 CommandGroup 属性绑定(bind)到 CommandBar 中的所有按钮(复制和粘贴内容):
<Page.Resources>
<c:CommandGroupToVisibilityConverter x:Key="MyConverter"/>
</Page.Resources>
<Page.BottomAppBar>
<CommandBar>
<!--buttons of group1-->
<AppBarButton
Icon="Icon1" Label="button1"
Visibility="{Binding CommandGroup, Converter={StaticResource MyConverter}, ConverterParameter=1}"/>
<!--buttons of group2-->
<AppBarButton
Icon="Icon2" Label="button2"
Visibility="{Binding CommandGroup, Converter={StaticResource MyConverter}, ConverterParameter=2}"/>
<!--buttons of group3-->
<AppBarButton
Icon="Icon3" Label="button3"
Visibility="{Binding CommandGroup, Converter={StaticResource MyConverter}, ConverterParameter=3}"/>
</CommandBar>
</Page.BottomAppBar>
请注意,当 CommandGroup == 2 时,ConverterParameter=2 的所有按钮都会显示,而其他按钮则消失。
这在一个页面中有多个 View (如 Pivot)并且每个 View 都有不同的命令按钮组的情况下可能非常有用。
关于c# - 多个 AppBar/CommandBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23179112/
我有这段代码可以在 Word (2010) 中创建一个临时命令栏。 Excel 中的结果相同。它创建了酒吧。我知道是因为我可以访问它、读取它的属性并删除它。但我不能让它可见。它应该漂浮在我页面顶部附近
Berry 是来自另一个 excel 文件的多个单元格的范围,Melon 是 powerpoint 幻灯片中的表格。我试图通过首先选择 ppt 表上的单元格(3,2)将 Berry 粘贴到 ppt 表
我有一个可能是愚蠢的疑问,但我真的不知道如何解决这个问题。 我有一个复杂的用户界面,里面有很多项目(一个 SplitView 里面有其他东西,然后是一个包含页面的框架,我有一个网格,最后是我的 Com
在我的应用程序中,我在应用程序顶部使用带有多个 AppBarButton 的 CommandBar。现在,如果我调整窗口大小,我希望 AppBarButtons 转到 CommandBar.Secon
在 Windows Phone 8 中,我能够使用多个 AppBar,在某些枢轴页面上交换它们,但在 Windows Phone 8.1 中,我不确定如何做到这一点,或者这是否可能。 基本上对于我的场
我正在尝试在我的 UWP 应用底部使用 CommandBar,但我似乎无法摆脱底部的这个空白。 很难看到,但它位于 CommandBar 和窗口底部边框之间。我尝试了各种 VerticalAlignm
我想将 CommandBar 移到右侧,让 AppBarButtons 从上到下排列。换句话说,我想将 CommandBar 从页面顶部向右侧旋转 90 度 我怎样才能做到这一点? J. 最佳答案 C
我的 COM 加载项有一个问题已经拖了好几个月了,我不知道为什么。 IDTExtensibility2 实现已经由 Carlos Quintero(MZ-Tools 背后的人)进行了同行评审,并被认为
这个问题在这里已经有了答案: How to create a popup menu in visual basic.net? (2 个回答) 5年前关闭。 我在 VBA 中有这段代码(以简化版本显示)
我只是想确认这一点:在 Office 2003 中,我想在运行时创建一个自定义子菜单——在 CommandBar 术语中称为弹出窗口 (msoControlPopup),并为其设置一个图像。使用 Co
我想更改 CommandBar 的 Background 和 Foreground 的背景颜色。但是,简单地设置 Background="whatever"Foreground="whatever"
我为 2003 及更早版本开发了一个 PowerPoint 插件,它在安装时生成自定义命令栏/工具栏。 我在卸载时删除这个命令栏没有困难,但因为它使用了 Auto_Close事件这样做,它还会在每次
我不知道我是否遗漏了什么,但我对此表示怀疑,在我看来它更像是一个错误,但我想我会先检查这里以防万一。 这是我的代码: 当我在手机上以纵向模式显示时,它总是显示
我有一个命令栏宽度辅助命令: 为什么不显示“喜欢”和“不喜欢”图标? 最佳答案 在 Windows
我已经安装了一个 Word 2003 插件,然后将其卸载,但不幸的是,我仍然在 Word 菜单栏中看到该插件创建的菜单。 我尝试了工具 -> 自定义,在那里我可以删除子菜单,但不能删除主菜单。 你知道
我正在尝试使用 Excel VBA 将按钮添加到新的 CommandBar(用于加载项选项卡)。如果我使用 FaceId,我可以将按钮放入功能区并显示图像,但我无法显示标题。有没有办法做到这一点?我必
我需要帮助将上下文菜单项 ( CommandBar ) 添加到我的应用程序: 将限制实际控件仅填充图片和形状的东西: Public WithEvents ContextMenuItem_SaveAsP
所以,我在 Google 上搜索了一下,似乎在制作自定义弹出菜单时,如果想传递参数,那么这是可能的,但对我来说有两个主要问题: 1) 您调用的函数将会执行,但您将无法在其上激活断点,甚至无法使用 St
我尝试在 powerpoint 中使用 vba 将表格从 excel 复制到 powerpoint,然后在 powerpoint 中调整其大小。但是,它会提示错误“Selection(Unknown
原帖: 启动 Outlook 时,加载项会加载并添加一个带有一些按钮的工具栏。 toolBar = OutlookApp.ActiveExplorer().CommandBars.Add(MENU_T
我是一名优秀的程序员,十分优秀!