- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试使用 MVVM 模式将 ItemClick
和 OptionItemClick
事件绑定(bind)到命令。根据文档https://developer.microsoft.com/en-us/windows/uwp-community-toolkit/api/microsoft_toolkit_uwp_ui_controls_hamburgermenu没有我可以绑定(bind)的 Command
。所以我想使用 https://www.nuget.org/packages/Microsoft.Xaml.Behaviors.Uwp.Managed/将我的事件触发器附加到命令的包。
我的 XAML 代码是
<Page
x:Class="App1.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:i="using:Microsoft.Xaml.Interactivity"
xmlns:ic="using:Microsoft.Xaml.Interactions.Core"
xmlns:localModel="using:App1.Models"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:controls="using:Microsoft.Toolkit.Uwp.UI.Controls"
mc:Ignorable="d">
<Page.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<localTemplate:TemplatesResourceDictionary/>
</ResourceDictionary.MergedDictionaries>
<DataTemplate x:Key="DefaultTemplate" x:DataType="localModel:MenuItem">
<Grid Width="240" Height="48" Margin="0,0,0,0" HorizontalAlignment="Left">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="48" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<SymbolIcon Grid.Column="0" Symbol="{x:Bind Icon, Mode=OneWay}" Foreground="White" />
<TextBlock Grid.Column="1" Text="{x:Bind Name, Mode=OneWay}" FontSize="16" VerticalAlignment="Center" Foreground="White" />
</Grid>
</DataTemplate>
</ResourceDictionary>
</Page.Resources>
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<controls:HamburgerMenu x:Name="hamburgerMenuControl"
Grid.Row="0"
Grid.Column="0"
PaneBackground="Black"
Foreground="White"
DisplayMode="CompactOverlay"
ItemsSource="{Binding Path=MainMenuItems}"
ItemTemplate="{StaticResource DefaultTemplate}"
OptionsItemsSource="{Binding Path=OptionMenuItems}"
OptionsItemTemplate="{StaticResource DefaultTemplate}"
OptionsItemClick="OnMenuItemClick">
<i:Interaction.Behaviors>
<ic:EventTriggerBehavior EventName="ItemClick">
<ic:InvokeCommandAction Command="{Binding Path=NavigateCommand}" />
</ic:EventTriggerBehavior>
</i:Interaction.Behaviors>
<Frame x:Name="contentFrame" />
</controls:HamburgerMenu>
</Grid>
</Page>
首先代码在VS2017中看起来很有趣,但它不会产生编译错误。
其次,当我启动代码并单击菜单项时,生成的代码 App.g.i.cs 中抛出了异常
还有进一步的消息要求我启动另一个调试器。
A debugger is attached to App1.exe but not configured to debug this unhandled exception. To debug this exception, detach the current debugger.
任何线索,将命令绑定(bind)到我的 View 模型的正确方法是什么?
最佳答案
我没有在 XAML 中看到您的 Page
的 DataContext
设置为您的 View 模型,所以我想这是在后面的代码中完成的。
正如 Andrey 提到的,将鼠标悬停在 e
参数上或在 Watch 窗口中检查它的值时,您可以看到实际的异常。我的第一个想法是您的 View 模型中的命令类型错误,因为您的 XAML 似乎是正确的。传递给 View 模型的参数不是绑定(bind)到 HamburgerMenu
的实际类型,而是 ItemClickedEventArgs
。
这是 DelegateCommand
的代码,但 RelayCommand
(或您使用的任何 ICommand
实现)应该类似。
public DelegateCommand<ItemClickEventArgs> NavigateCommand { get; }
private void OnMenuItemClicked(ItemClickEventArgs args)
{
HamburgerMenuPrismItem menuItem = (HamburgerMenuPrismItem)args.ClickedItem;
_navigationService.Navigate(menuItem.TargetPageToken, null);
}
请注意 HamburgerMenuPrismItem 是我自己的类型,这应该是您绑定(bind)到 HamburgerMenu 的类型。
我前段时间创建了一个类似的示例(使用 Prism 作为 MVVM 框架),因此您可以在 GitHub 上自行查看源代码.
好处:如果您自己添加了 Microsoft.Xaml.Behaviors.Uwp.Managed,则不需要它(除非您想要指定版本)。您的 HamburgerMenu 需要 Microsoft.Toolkit.Uwp.UI.Controls,它会引入 Microsoft.Toolkit.Uwp.UI.Animations,它本身会引入 Microsoft.Xaml.Behaviors.Uwp.Managed。
关于c# - MVVM 命令绑定(bind)到 UWP 工具包汉堡菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46333978/
鉴于此 export const slice = createSlice({ name: 'reducer', initialState: { }, reducers:
当创建新图表并添加系列(例如 ColumnSeries)和数据时,列将呈现为淡入动画类型,并在屏幕上绘制图表后瞬间出现。 有什么办法可以阻止这个动画的发生吗?或者,是否有办法强制图表在渲染之前完成动画
我正在尝试从 Java 的 JDK 导入 tools.jar,但每当我尝试创建 newInstance 时,都会收到 InstantiationException来自图书馆的类(class)。 到目前
我正在寻找 JavaScript RIA 工具包。我的要求是:漂亮的外观、免费的许可证和健全的 API。有什么想法吗? 这就是我到目前为止所发现的: ExtJS 专业人士 完美的外观 很多小部件 支持
jsPlumb工具包是否可以根据要绘制和连接的对象的数量和类型动态定位内容。我的意思是目前example他们给出的方法是,使用 css 来定位每个节点,当我们动态生成可视化时,这不是一个好的选择,因为
我正在 Linux 中创建磁盘分析器。我想知道哪个 Python 工具包可以帮助我使用 GUI。我目前正在尝试 Tkinter 有更好的东西吗? 最佳答案 “更好”是主观的。我很乐意提出我的意见,即没
我们正在构建一个调查网络应用程序,它允许用户在离线时向调查添加新记录,并在浏览器重新连接到服务器时上传。 我们已经确定这将需要离线存储,因此 google gears 似乎是一个显而易见的选择(我们知
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我正在寻找可以在 Linux 系统上使用 C++ 语言的 SOAP 工具包。我查看了 AXIS2C,但发现它的文档很少。不幸的是,gSoap 需要许可证,所以还有其他的吗? 最佳答案 我用于 C++
我只是想掌握我可以从中构建的 OpenGL,所以我正在寻找的只是构建 Windows 等的基本知识。我在阅读教程时注意到的一件事就是它似乎就像很多信息已经过时了 - 例如很多教程(其中许多是几年前写的
有谁知道如何在 Silverlight 工具包的 TreeView 中实现拖放? 我看到了 Silverlight 的拖放管理器,但据说您可以在要拖放的项目周围放置容器,但我想知道如何在另一个 Tre
已结束。此问题不符合 Stack Overflow guidelines .它目前不接受答案。 我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。 关闭
我有一个有 6 列的 DataGrid,每列都是一个 RadioButton,以便用户可以选择 1 in 6 选项。大约有100行。我用 6 个 bool 数据成员创建了一个自定义类,然后将数据网格与
从我发现的一个 Silverlight 论坛页面,我的印象是在后面的代码中创建的 ChildWindow 会选择页面其余部分的主题;只有当您从 ChildWindow 继承时,情况才不再如此。 出于某
我正在使用 WPF 工具包 AutoCompleteBox,它的 itemsSource 是一个包含数百万个对象的列表。 AutoCompleteBox 是否用于搜索后台线程,如果没有,我该如何实现。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 8年前关闭。 Improve this qu
这个问题已经有答案了: What is the difference between a framework and a library? [closed] (22 个回答) 已关闭 7 年前。 框架
我的问题很简单,我想通过一个简单的例子得到清晰的答案。 API、工具包、框架和库之间的主要区别是什么? 最佳答案 我更喜欢以下内容: API 是如何使用应用程序的抽象描述。例如,API可以描述聊天服务
我有一个 C# 应用程序。目前所有模块都是用 .NET 2 编写的,并且它使用一些具有 Linux 端口的可执行文件。所以我想知道我应该在 Windows 和 MacOS 上使用什么工具包才能在两者上
这是我非常简单的 Accordion XAML :- 如果我非常快地点击 Accordion 项目几次,我会得到这个异常:- AccessViolation
我是一名优秀的程序员,十分优秀!