如何解决Xamarin Forms 1 视图绑定到多个对象
所以我必须质疑如何将多个对象绑定到 1 个视图,因为从我收集到的信息来看,您不能将多个对象(也称为内容)绑定到每个视图。我从 sql db 和 mongo db 获得数据,从一个项目获得数据,从另一个获得产品。我希望能够从基于项目和产品模型的视图中输入数据,并将其显示到从 2prevIoUs 混合的第三个对象中。想法是为某些项目生成从仓库中取出的产品的库存日志。
解决方法
是的,您可以创建一个包含绑定到视图所需的所有数据(多个对象)的 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
和Command MonkeySelectionChangedCommand
,就像如下:
<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>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。