Xamarin Forms访问Listview

3
我需要就 Xamarin Forms 相关问题提问,我在共享库中有一个名为 BluetoothPage.cs 的类,在 Ios、Droid 和 WinPhone 上编译。现在在 Droid 共享项目中,我想访问 BluetoothPage.cs 中的 Listview,它在我的共享库 (Portable) 中。
我可以将其设置为静态的,但这不是我们想要的方式,因为我还想绑定特定于每个设备的数据。
这就是为什么我想从我的 .Droid 共享项目以及我的 .IOS 共享项目访问它。
1个回答

2
请查看自定义渲染器。您需要编写蓝牙页面的自定义渲染器,然后就可以从所有平台访问表单页面的实例。

共享代码

namespace BluetoothApp
{
    public ListView List {get; set;}

    public class  BluetoothPage : ContentPage
    {
    }

}

iOS

[assembly:ExportRenderer(typeof(BluetoothPage), typeof(BluetoothPageRenderer))]

namespace CustomRenderer.iOS
{
    public class BluetoothPageRenderer : PageRenderer
    {
        protected override void OnElementChanged (ElementChangedEventArgs<ContentPage> e)
        {
            base.OnElementChanged (e);

            var bluetoothPage = (BluetoothPage)e;

            bluetoothPage.List.DoStuff();
        }

    }

}

安卓和Windows手机的渲染器略有不同,但思路是相同的。您可以在文档或此处找到自定义渲染器的示例。


嗯,看起来这对于一个简单的调用来说是很多工作吧?我可以使用#if__ANDROID__这样的指令,但是那样我就不能使用原生命名空间Android.OS了。 - Stefan van de Laarschot
如果您想要调用设备特定的代码,可以使用依赖服务。这取决于您对列表正在做什么? - koreus737

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接