Xamarin.forms 当CollectionView包含在ScrollView和ScrollView';可见的是假的
我陷入了一个奇怪的问题 我有不同的简单布局,如下所示Xamarin.forms 当CollectionView包含在ScrollView和ScrollView';可见的是假的,xamarin.forms,xamarin.ios,Xamarin.forms,Xamarin.ios,我陷入了一个奇怪的问题 我有不同的简单布局,如下所示 <ScrollView> <CollectionView /> </ScrollView> 视图模型 public类MainPageViewModel:INotifyPropertyChanged { 私有可观测集合_itemSource; 公共ObservableCollection ItemSource=>\u ItemSource; 公共MainPageViewModel() { _item
<ScrollView>
<CollectionView />
</ScrollView>
视图模型
public类MainPageViewModel:INotifyPropertyChanged
{
私有可观测集合_itemSource;
公共ObservableCollection ItemSource=>\u ItemSource;
公共MainPageViewModel()
{
_itemSource=新的ObservableCollection();
对于(int i=0;i<28;i++)
_添加(新对象());
}
公共事件属性更改事件处理程序属性更改;
私有void NotifyPropertyChanged([CallerMemberName]字符串propertyName=”“)
{
PropertyChanged?.Invoke(这是新的PropertyChangedEventArgs(propertyName));
}
}
完整的源代码在上,这似乎是ScrollView存在的问题。为什么在默认情况下将IsVisible设置为False?最好使用数据绑定,并在加载页面后将该值设置为False。@LucasZhang MSFT原始源代码使用数据绑定。我只是为这个问题做了一个清晰的示例。这似乎是ScrollView存在的问题(当使用StackLayout和Grid时,它可以正常工作)。你可以发布这个问题并分享链接。我们会关注它。
<ContentPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:Test="clr-namespace:CollectionViewTest"
x:Class="CollectionViewTest.MainPage">
<ScrollView IsVisible="False">
<CollectionView
ItemsSource="{Binding ItemSource}"
SelectionMode="Single">
<CollectionView.ItemsLayout>
<GridItemsLayout
Orientation="Vertical"
Span="4"
VerticalItemSpacing="10"/>
</CollectionView.ItemsLayout>
<CollectionView.ItemTemplate>
<DataTemplate>
<Image
Source="{Test:ImageResource CollectionViewTest.waterfront.jpg}"
Aspect="AspectFit"
WidthRequest="70"
HeightRequest="70"/>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</ScrollView>
</ContentPage>
public class MainPageViewModel : INotifyPropertyChanged
{
private ObservableCollection<object> _itemSource;
public ObservableCollection<object> ItemSource => _itemSource;
public MainPageViewModel()
{
_itemSource = new ObservableCollection<object>();
for (int i = 0; i < 28; i++)
_itemSource.Add(new object());
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}