Xamarin Prism BindingContext to ViewModel for Intellisense 数据建议

Xamarin Prism BindingContext to ViewModel for Intellisense data suggest

我来自 WPF,在其中指定 DataContext(Xamarin 的 BindingCntext)时,智能感知会向我显示我的属性和方法。 在 Xamarin 中使用 Prism 可以做到这一点吗?

Xamarin.Forms 的工具还有很长的路要走。使用像 MFractor 这样的第三方解决方案就可以了。目前它仅适用于 Mac 的 VS,但是 Windows 上的 Visual Studio 版本即将推出。

作为解决方法,您可以使用一些设计时数据,例如:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
            xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
            xmlns:d="http://xamarin.com/schemas/2014/forms/design"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:vm="clr-namespace:AwesomeApp.ViewModels"
            mc:Ignorable="d"
            x:Class="AwesomeApp.Views.ViewA">
    <d:ContentPage.BindingContext>
        <vm:ViewAViewModel />
    </d:ContentPage.BindingContext>

在这里,我们为设计、标记兼容性和我们的 ViewModels 引入了几个 XML 命名空间。然后我们指定设计时的任何内容都是可忽略的,这意味着它仅适用于 IDE Intellisense,不会包含在我们的 Debug/Release 构建中。然后我们可以在 DesignTime 中添加 BindingContext。请注意,从技术上讲,它会在 ViewModel 上显示错误,因为它没有无参数构造函数。

你有两个选择。您可以忽略它,因为它是设计时间而不是实际问题。它仍将继续为您提供 ViewModel 中属性的智能感知。或者你可以只添加一个无参数的构造函数。一般来说,这应该不是问题,除非容器无法解析依赖项,它可能会尝试使用默认构造函数来代替,这会在运行时导致各种问题。目前,在设计时构建中没有实际的常量允许您 #if DESIGN_TIME 无参数构造函数,这就是为什么我的建议是忽略有关 ViewModel 的设计时警告。