我有一个MAUI前端,连接到一个按钮成功地从虚拟机与
Command="{Binding BindingContext.ImageCreateCommand, Source={x:Reference PageName}}
完整的MAUI命令位于集合视图中,例如
<CollectionView Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="9" VerticalOptions="FillAndExpand"
ItemsSource="{Binding class}">
<CollectionView.ItemTemplate>
<DataTemplate x:DataType="models:class">
...
<Button Text="Add" Grid.Column="0" Command="{Binding BindingContext.ImageCreateCommand, Source={x:Reference WorkNotification}}" CommandParameter="{Binding id}"></Button>
<Label TextColor="{DynamicResource SecondaryTextColor}" Grid.Column="1" Text="{Binding id}" Style="{DynamicResource ContentLabel}"/>
<Label TextColor="{DynamicResource SecondaryTextColor}" Grid.Column="2" Text="{Binding txt}" Style="{DynamicResource ContentLabel}"/>
..
我想在集合视图中使用CommandParameter="{Binding id},这样我就可以使用该id执行某些操作,但当我将其放入按钮CommandParameter中时没有成功
我的视图模型是这样的:
public ObservableRangeCollection<class> class { get; } = new();
public viewmodel(string funcLoc)
{
ImageCreateCommand = new Command(async () =>
{
Console.WriteLine(id);
}
};
文档说你可以将CommandParameter属性设置为任意数据,以区分多个按钮,如果它们都绑定到视图模型中的同一ICommand属性,这是因为CollectionView可以看到id并显示它。
如何将集合视图中的项用作此命令中的参数。
1条答案
按热度按时间5tmbdcev1#
很难从问题的当前状态推断出问题出在哪里,但无论如何,我将提供一个通用的答案。
如果您有一个项目集合,并且希望将它们或它们的任何属性用作 CommandParameter,则可以按以下方式执行此操作。
在ViewModel中,你有一个集合,假设是一个
ObservableCollection<MyItem>
,其中MyItem
定义如下:你的ViewModel,让我们称之为
MyViewModel
也有一个 Command,让我们称之为MyCommand
,它接受一个string
作为参数,那么它看起来像这样:在XAML中,可以设置一个
<CollectionView>
,在其中可以引用MyCommand
命令并将Id
属性作为参数传递。这需要您将
MyViewModel
的示例设置为BindingContext
,例如在视图或页面的代码隐藏中:然后,在MyPage的XAML中,您可以使用Relative Binding设置
<CollectionView>
和 Command 绑定到ViewModel: