单击ListViewItem并让它在视图模型中执行某些操作是最基本的命令,但我在ListView或ListViewItem上找不到任何可绑定的属性。至少毛伊岛有手势行为。这就是它的工作方式:
<ListView DataContext="{x:Bind ViewModel.FolderViewModel}"
ItemsSource="{x:Bind Items}"
Tapped={x:Bind Tapped}">
</ListView>求你了我错过了什么。还有另一种更聪明的本土化的方法吗?如果是的话,那是什么。如果没有,为什么不支持MVVM?
是的,我知道有外包装。我觉得我刚上了一辆新汽车,没有方向盘。如果驾驶是如此重要的概念,那么方向盘在哪里?如果汽车的制造商发明了一种自动驾驶汽车,那么我需要学习这种新的模式。如果制造商只是说“去AutoZone买一个方向盘”,那么这只是一个糟糕的设计。
发布于 2022-09-08 01:30:45
您可以应用MVVM设计。
有些控件(如Button)允许直接绑定Command,但对于ListView,需要将event转换为Command。这在WPF,UWP中几乎是一样的。
NuGet软件包
.xaml
<Window
x:Class="WinUI3App1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:core="using:Microsoft.Xaml.Interactions.Core"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:interactivity="using:Microsoft.Xaml.Interactivity"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<StackPanel>
<ListView>
<interactivity:Interaction.Behaviors>
<core:EventTriggerBehavior EventName="SelectionChanged">
<core:InvokeCommandAction Command="{x:Bind ViewModel.SelectItemCommand}" />
</core:EventTriggerBehavior>
</interactivity:Interaction.Behaviors>
<ListViewItem Content="Item #1" />
<ListViewItem Content="Item #2" />
</ListView>
</StackPanel>
</Window>.xaml.cs
using Microsoft.UI.Xaml;
namespace WinUI3App1;
public sealed partial class MainWindow : Window
{
public MainWindow()
{
this.InitializeComponent();
}
public MainWindowViewModel ViewModel { get; } = new();
}ViewModel.cs
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
namespace WinUI3App1;
public partial class MainWindowViewModel : ObservableObject
{
[RelayCommand]
private void SelectItem(object param)
{
}
}https://stackoverflow.com/questions/73642552
复制相似问题