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模式

在 RadListView 中居中特定列(Telerik,Winforms)

WPF Telerik TreeListView样式设计