- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个现有的 UWP 应用程序来管理网站和帐户的密码,但是当我大约 3 年前编写它时,我不太了解 MVVM,因此所有事件处理程序都在 View 的代码中,现在我正在尝试解决这个问题并通过将此代码移动到 ViewModel 使其更符合 MVVM。
我拥有的现有功能之一是每个 ListView 项目上的弹出菜单,因此用户可以编辑/删除条目(并执行其他几个功能),但是因为我正在为 ListView ItemTemplate 数据模板定义 DataType,所以现在不会在我的 Viewmodel 中识别到 Click 事件处理程序的绑定(bind)。
正如您所期望的,我在命名空间和页面数据上下文中都定义了我的 ViewModel,如下所示:
<Page ....
xmlns:vm="using:PassPort.ViewModels"
...>
<Page.DataContext>
<vm:MainViewModel/>
</Page.DataContext>
</ListView Name="lvwAccounts"
ItemsSource="{x:Bind vm.AccountsView}"
.....>
<ListView.ItemTemplate>
<DataTemplate x:DataType="model:Account">
<Grid MinHeight="36" HorizontalAlignment="Left" RightTapped="AccountsList_RightTapped">
<FlyoutBase.AttachedFlyout>
<MenuFlyout Placement="Bottom">
<MenuFlyoutItem x:Name="OpenWebsiteButton" Text="Open Website" Click="{x:Bind vm.FlyoutOpenWebsiteButton_Click}"/>
<MenuFlyoutItem x:Name="EditButton" Text="Edit Account" Click="{x:Bind vm.FlyoutEditButton_Click}"/>
<MenuFlyoutItem x:Name="AddButton" Text="Add Account" Click="{x:Bind vm. FlyoutAddButton_Click}"/>
<MenuFlyoutItem x:Name="DeleteButton" Text="Delete Account" Click="{x:Bind vm.FlyoutDeleteButton_Click}"/>
</MenuFlyout>
</FlyoutBase.AttachedFlyout>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200"/>
<ColumnDefinition Width="150"/>
<ColumnDefinition Width="200"/>
<ColumnDefinition Width="150"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="{x:Bind AccountName}" Foreground="{StaticResource Light}"
VerticalAlignment="Center" HorizontalAlignment="Stretch"/>
<TextBlock Grid.Row="0" Grid.Column="1" Text="{x:Bind Category}" Foreground="{StaticResource Light}"
VerticalAlignment="Center" HorizontalAlignment="Stretch" TextWrapping="Wrap" />
<TextBlock Grid.Row="0" Grid.Column="2" Text="{x:Bind UserID}" Foreground="{StaticResource Light}"
VerticalAlignment="Center" HorizontalAlignment="Left"/>
<TextBlock Grid.Row="0" Grid.Column="3" Text="{x:Bind Password}" Foreground="{StaticResource Light}"
VerticalAlignment="Center" HorizontalAlignment="Left" />
<TextBlock Grid.Row="0" Grid.Column="4" Text="{x:Bind PasswordHint}" Foreground="{StaticResource Light}"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
最佳答案
在 DataTemplate and x:Bind微软说:
Inside a DataTemplate (whether used as an item template, a content template, or a header template), the value of Path is not interpreted in the context of the page, but in the context of the data object being templated. So that its bindings can be validated (and efficient code generated for them) at compile-time, a DataTemplate needs to declare the type of its data object using
x:DataType
.
binding
而不是
x:bind
喜欢这段代码。
<ListView Name="lvwAccounts"
ItemsSource="{x:Bind vm.AccountsView}" >
<ListView.ItemTemplate>
<DataTemplate x:DataType="model:Account">
<FlyoutBase.AttachedFlyout>
<MenuFlyout Placement="Bottom">
<MenuFlyoutItem x:Name="OpenWebsiteButton" Text="Open Website" Command="{Binding ElementName=lvwAccounts,Path=DataContext.FlyoutOpenWebsite}"/>
</MenuFlyout>
</FlyoutBase.AttachedFlyout>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
binding
在 UWP 中无法绑定(bind)方法和
binding
只能绑定(bind)Command。您应该将方法更改为命令。
关于c# - UWP:将 ListView ItemTemplate MenuFlyOut 事件绑定(bind)到 ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52070215/
我的 DataTemplate 中的 Grid 目前有这个 Flyout。
我刚刚创建了一个小弹出按钮: MenuFlyout flyout = new MenuFlyout(); flyout.Items.Add(new X_UWP_App.Models.MyMenuFly
在我的 UWP 中,我试图在框架中心打开一个 MenuFlyout。 我怎样才能把它放在中心? 我试过这段代码,但它在框架顶部设置了弹出按钮。 private void ListView_ItemCl
问题:右键单击一行时,我正在尝试在 DataGrid 上创建一个菜单。 目标:右键单击一行时是否可以在 DataGrid 上创建菜单;我可以在单元格上创建一个吗?
我正在尝试向 menuflyoutitem 添加一个图标,我希望我的菜单看起来与这个类似: 这是我的代码:
我没有找到包含操作 menuflyout 属性的示例,因此如果用户单击 togglemenuitem,它会保持打开状态,但如果失去焦点或单击 esc 按钮,它仍会关闭。 我更喜欢的功能是它保持打开状态
我有一个带有评论列表的 ListView:
我几乎阅读了这篇文章的全部内容,但我就是不知道如何更改,例如MenuFlyout 的入口主题过渡,就像它出现在日历应用程序中一样。有类似水平转动的东西,而不是 MenuFlyout 的默认动画。
我有一个现有的 UWP 应用程序来管理网站和帐户的密码,但是当我大约 3 年前编写它时,我不太了解 MVVM,因此所有事件处理程序都在 View 的代码中,现在我正在尝试解决这个问题并通过将此代码移动
我是一名优秀的程序员,十分优秀!