Xamarin Forms 1 视图绑定到多个对象
Posted
技术标签:
【中文标题】Xamarin Forms 1 视图绑定到多个对象【英文标题】:Xamarin Forms 1 view binded to multiple objects 【发布时间】:2021-07-17 16:43:43 【问题描述】:所以我不得不质疑如何将多个对象绑定到 1 个视图,因为根据我收集的信息,您不能将多个对象(即内容)绑定到每个视图。我得到了来自 SQL db 和 mongo db 的数据,来自一个的项目和来自另一个的产品。我希望能够根据项目和产品模型从视图中输入数据,并将其显示到从 2previous 混合的第三个对象中。想法是为某些项目从仓库中取出的产品生成库存日志。
【问题讨论】:
创建一个包含给定视图所需的所有数据的视图模型 【参考方案1】:是的,您可以创建一个 ViewModel,其中包含您需要绑定到视图的所有数据(多个对象)。
您可以参考官方示例Xamarin.Forms - CollectionView。
以一页VerticalListSinglePreSelectionPage.xaml为例,我们可以将我们的数据添加到视图模型MonkeysViewModel.cs中,如下所示:
public class MonkeysViewModel : INotifyPropertyChanged
readonly IList<Monkey> source;
Monkey selectedMonkey;
int selectionCount = 1;
public ObservableCollection<Monkey> Monkeys get; private set;
public IList<Monkey> EmptyMonkeys get; private set;
public Monkey SelectedMonkey
get
return selectedMonkey;
set
if (selectedMonkey != value)
selectedMonkey = value;
ObservableCollection<object> selectedMonkeys;
public ObservableCollection<object> SelectedMonkeys
get
return selectedMonkeys;
set
if (selectedMonkeys != value)
selectedMonkeys = value;
public string SelectedMonkeyMessage get; private set;
// other code
我们可以在xaml中绑定多个对象,这里我们在页面VerticalListSinglePreSelectionPage.xaml中绑定SelectedMonkeyMessage
,Monkeys
,SelectedMonkey
和CommandMonkeySelectionChangedCommand
,如下:
<StackLayout Margin="20">
<Label Text="Binding SelectedMonkeyMessage" />
<CollectionView ItemsSource="Binding Monkeys"
SelectionMode="Single"
SelectedItem="Binding SelectedMonkey"
SelectionChangedCommand="Binding MonkeySelectionChangedCommand">
<CollectionView.ItemTemplate>
<DataTemplate>
<Grid Padding="10">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Image Grid.RowSpan="2"
Source="Binding ImageUrl"
Aspect="AspectFill"
HeightRequest="60"
WidthRequest="60" />
<Label Grid.Column="1"
Text="Binding Name"
FontAttributes="Bold" />
<Label Grid.Row="1"
Grid.Column="1"
Text="Binding Location"
FontAttributes="Italic"
VerticalOptions="End" />
</Grid>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</StackLayout>
【讨论】:
嗨@Anton Mesila,我已经好几天没有收到你的消息了。如果有什么我可以在这里提供帮助的,请告诉我。以上是关于Xamarin Forms 1 视图绑定到多个对象的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin Forms Switch Toggled 事件未与视图模型绑定
如何使用 c# 将单个 html 行绑定到 xamarin.forms 中的多个标签