我正在尝试在Xamarin Forms中使用CarouselPage。
terminate-instances
在视图模型中我有
<?xml version="1.0" encoding="utf-8" ?>
<CarouselPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms"
xmlns:views="clr-namespace:TestForms.Views;assembly=TestForms"
prism:ViewModelLocator.AutowireViewModel="True"
x:Class="TestForms.Views.Photos" ItemsSource="{Binding Pages}">
<CarouselPage.ItemTemplate>
<DataTemplate>
<ContentPage >
<StackLayout VerticalOptions="StartAndExpand" Padding="50">
<Label Text="ContentPage"></Label>
<Label Text="{Binding Title}"></Label>
<Label Text="{Binding Description}"></Label>
</StackLayout>
</ContentPage>
</DataTemplate>
</CarouselPage.ItemTemplate>
</CarouselPage>
当我渲染时,我会得到所有照片的页面列表。但我似乎无法在单个页面中绑定标题或说明。 我在这里缺少什么?
答案 0 :(得分:2)
您已正确连接CarouselPage
只需稍微更改您的视图模型。
我假设您的Title
和Description
属性位于PhotoDetailViewModel
?
如果是这样,您在CarouselPage
中创建的绑定无法正常工作,因为它已绑定到ContentPage
列表,而CarouselPage
列表中没有属性&#34;标题&#34 ;和&#34;描述&#34;
在您的ItemsSource
中,您已经设置了BindingContext
绑定,该绑定应自动设置CarouselPage
中子网页的ObservableCollection
。所以你不需要手动完成。
因此,请在ViewModel中创建PhotoDetailViewModel
ItemsSource
,并将CarouselPage
的{{1}}绑定到该List<ContentPage> ContentPages = new List<ContentPage>();
foreach (var photo in Photos)
{
var page = new ContentPage();
page.BindingContext = new PhotoDetailViewModel(photo);
ContentPages.Add(page);
}
Pages = new ObservableCollection<ContentPage>(ContentPages);
。
删除:
Pages = new ObservableCollection<PhotoDetailViewModel>(Photos.Select(p => new PhotoDetailViewModel(p));
并添加:
Pages
务必将ObservableCollection<PhotoDetailViewModel>
的属性类型更改为(49807360, [[111206019,'ABC','XYZ:RDC' , 'RDC' , 123] , [111206019,'ABC','XYZ:RDC' , 'RDC' , 123]] , [[[111206019,'ABC','XYZ:RDC' , 'RDC' , 123] , 111206019,'ABC','XYZ:RDC' , 'RDC' , 123]] , [[111206019,'ABC','XYZ:RDC' , 'RDC' , 123],[111206019,'ABC','XYZ:RDC' , 'RDC' , 123]])
这应该是你需要改变的全部
答案 1 :(得分:0)
正如我所说,你应该使用ContentView而不是ContentPage。下面是工作示例
private async void OnClientConnected(object sender, EventArgs e)
{
await Task.Run(() => HandleClientConnected(object, e));
}
protected abstract Task HandleClientConnected(object sender, EventArgs e);
第xml页
reshape(df, idvar="record", timevar="type", direction="wide")
# record v1.orig v2.orig v3.orig v1.dupl v2.dupl v3.dupl
#1 r1 0 0 1 0 0 1
#3 r2 0 1 0 NA NA NA
#4 r3 0 0 1 0 0 1