Xamarin Telerik RadListview 在 iOS 中不绑定
Posted
技术标签:
【中文标题】Xamarin Telerik RadListview 在 iOS 中不绑定【英文标题】:Xamarin Telerik RadListview doesn't bind in iOS 【发布时间】:2021-11-10 01:01:02 【问题描述】:我有一个相当简单的列表视图,它显示 3 列,非常适合 android。当我在 ios 中运行它时,列表视图就在那里(我放了一个奇怪的颜色背景来验证它是否可见),但它没有任何项目。
<telerikDataControls:RadListView Grid.Row="2" x:Name="Locations" ItemsSource="Binding CurrentLocationList"
VerticalScrollBarVisibility="Always" VerticalOptions="FillAndExpand" ItemTapped="Locations_ItemTapped" BackgroundColor="Aqua">
<telerikDataControls:RadListView.ItemTemplate>
<DataTemplate>
<telerikListView:ListViewTemplateCell>
<telerikListView:ListViewTemplateCell.View>
<StackLayout Orientation="Horizontal" Margin="5,5,5,5">
<Label Text="Binding Name" FontSize="20" VerticalOptions="Center" />
<Label Text="Binding Id" HorizontalOptions="EndAndExpand" FontSize="20" VerticalOptions="Center" />
<local:GrayRadioButton x:Name="rbtSelectedLocation" IsChecked="Binding Selected" GroupName="grpLocation" />
</StackLayout>
</telerikListView:ListViewTemplateCell.View>
</telerikListView:ListViewTemplateCell>
</DataTemplate>
</telerikDataControls:RadListView.ItemTemplate>
</telerikDataControls:RadListView>
是否需要一些设置才能在 iOS 中运行?
谢谢。
我正在更新一些屏幕截图。
安卓:
iOS
【问题讨论】:
就像 FreakyAli 所说,您可能在 StackLayout 父级中有 RadListView,或者它所在的 Grid.row 设置为 Height=Auto。在这里仔细阅读我的文章docs.telerik.com/devtools/xamarin/troubleshooting/… 感谢您的回复。我已经验证这一切都是正确的。该控件位于分配给高度定义为“*”的行的网格内。我也将它设置为一个固定值,它没有任何区别。还有其他想法吗? 另外,它适用于 Android。 带有 BG 颜色故障排除的屏幕截图很有帮助,它可以验证 RLV 容器是否存在。如果删除 VerticalOptions=FillAndExpand 会发生什么?另外,将模板内容简化为一个标签(暂时消除自定义按钮) 我删除了自定义控件和 VerticalOptions,结果相同(尽管这提醒我我也需要为 iOS 放置自定义指令!)。我会开票。 【参考方案1】:每当出现 Telerik 视图未显示的问题时,问题始终是包在本机或表单项目中不可用。
在RadListView's 入门屏幕上,您可以找到项目需要的 DLL。
确保您的可移植项目具有以下 DLL:
Telerik.XamarinForms.Common.dll
Telerik.XamarinForms.DataControls.dll
Telerik.XamarinForms.Primitives.dll
Telerik.XamarinForms.SkiSharp.dll
而你的 iOS 项目需要具备以下条件:
Telerik.Xamarin.iOS.dll
Telerik.XamarinForms.Common.dll
Telerik.XamarinForms.DataControls.dll
Telerik.XamarinForms.Primitives.dll
Telerik.XamarinForms.SkiSharp.dll
另外请确保您阅读此警告:
警告:RadListView 控件提供 UI 虚拟化,此功能需要视觉父级提供垂直或水平空间。为避免破坏 UI 虚拟化或手势机制,请遵循以下规则: 不要将 RadListView 控件放在 StackLayout 中 不要将 RadListVew 放在 ScrollView 内 不要将 RadListVew 设置为 Grid RowDefinition Height="Auto" 有关这些布局的更多信息和解决方案,请查看控件未出现文章。
如果您有任何疑问,欢迎随时回复。
【讨论】:
感谢您的回复。我已经验证这一切都是正确的。该控件位于分配给高度定义为“*”的行的网格内。我也将它设置为一个固定值,它没有任何区别。还有其他想法吗? 您可以尝试将其放在不同的布局中吗?或者将其从网格中删除,看看是否适合您? 我把它放在一个页面上,它是唯一具有相同结果的控件。 你检查 dll 的东西了吗? 是的,我做到了。所有参考资料都在那里。【参考方案2】:不知何故,我的 iOS 项目引用了便携式二进制文件,而不是 iOS 二进制文件。当我更正路径时,项目出现在列表视图中。
【讨论】:
以上是关于Xamarin Telerik RadListview 在 iOS 中不绑定的主要内容,如果未能解决你的问题,请参考以下文章
单元格中带有按钮的 Xamarin Telerik ListView - 按钮的单击事件不会触发
移动UI控件Telerik UI for Xamarin发布R2 2019|引入Map控件
在 Xamarin Forms 的 Telerik ListView 中,如何处理 Windows 上元素的右键单击事件?
Xamarin Forms - 滑动菜单(导航抽屉)RTL模式