gpt4 book ai didi

c# - 在 App.xaml 中添加不同的 BottomAppBars

转载 作者:太空宇宙 更新时间:2023-11-03 13:07:46 26 4
gpt4 key购买 nike

如何在App.xaml中添加不同的BottomAppBar?我需要在相同或不同的页面中动态加载不同的 BottomAppBar,所以我想将它们添加到 App.xaml 中。

例如,这里我在 xaml 中有 2 个 BottomAppBars:

PageBottomAppBar1

<Page.BottomAppBar>
<CommandBar Name="PageBottomAppBar1">
<CommandBar.PrimaryCommands>
<AppBarButton Label="new"
Icon="Page"
Command="{Binding AddCommand, Mode=OneWay}"/>
<AppBarButton Label="search"
Icon="Find" />
</CommandBar.PrimaryCommands>

<CommandBar.SecondaryCommands>
<AppBarButton Name="Logout"
Label="Logout"
Command="{Binding LogoutCommand, Mode=OneWay}" />
</CommandBar.SecondaryCommands>
</CommandBar>
</Page.BottomAppBar>

PageBottomAppBar2

<Page.BottomAppBar>
<CommandBar Name="PageBottomAppBar2">
<CommandBar.PrimaryCommands>
<AppBarButton Label="sync"
Icon="Sync"
Command="{Binding SyncCommand, Mode=OneWay}"/>
<AppBarButton Label="search"
Icon="Find" />
</CommandBar.PrimaryCommands>

<CommandBar.SecondaryCommands>
<AppBarButton Name="About"
Label="About"
Command="{Binding AboutCommand, Mode=OneWay}" />
</CommandBar.SecondaryCommands>
</CommandBar>
</Page.BottomAppBar>

如何将它们添加到 App.xaml 中,以便将它们用作资源?

这是 App.xaml:

<Application x:Class="Test.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:Test">
<Application.Resources>
<vm:ViewModelLocator x:Key="Locator" xmlns:vm="using:Test.ViewModel" />

</Application.Resources>
</Application>

最佳答案

只是一个想法,但是定义一个继承自 IObservableVector 的类呢:

public class CommandBarContent : IObservableVector<ICommandBarElement> {}

然后在 XAML 中

<cb:CommandBarContent x:Key="FirstPrimaryBar">
<AppBarButton Label="new"
Icon="Page"
Command="{Binding AddCommand, Mode=OneWay}"/>
<AppBarButton Label="search"
Icon="Find" />
</cb:CommandBarContent>

添加一个选择器/转换器(我会以此为例 http://tech.pro/tutorial/807/wpf-tutorial-how-to-use-a-datatemplateselector )

<cb:MyCommandSelector x:Key="CommandSelector" Case1="{StaticResource FirstPrimaryBar}" Case2="{StaticResource SecondPrimaryBar}" />

然后绑定(bind)命令栏:

<CommandBar Name="PageBottomAppBar1" PrimaryCommands="{Binding ScenarioParameter,Converter={StaticResource CommandSelector}}">

我还没有尝试过,但根据可能情况的数量,这可能是我会使用的解决方案。

另一种选择是绑定(bind)按钮的 Visibility 属性,我已经为删除按钮完成了该操作,但是按钮在更改场景时具有“跳跃”行为,这有点奇怪。

关于c# - 在 App.xaml 中添加不同的 BottomAppBars,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30176622/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com