【发布时间】:2017-08-03 20:50:43
【问题描述】:
在 Xamarin.Forms 中,可以通过 <ContentPage.BindingContext> 标记在标记内指定要与 XAML 页面一起使用的 ViewModel。我可以看到这样做的唯一优势 - 与 Prism.Forms 将视图绑定到 ViewModels 的更灵活的方式相比 - 然后我在 XAML 中获得了关于 VM 属性的 IntelliSense /commands 添加我的{Binding} 属性值时。
同样,Prism.Forms 有更好的方法来绑定视图和ViewModels,但是当我使用它们时,我通常不会在 XAML 页面中获得 IntelliSense - 这实际上是对复杂的 View/ViewModel 很有帮助。
我看不出有任何理由不能在 Prism.Forms 场景中使用 <ContentPage.BindingContext> 标签。但这感觉就像我正在“打破”Prism 想要做View-to-ViewModel 绑定的方式。
另外,我担心我的ViewModel 会被不必要地实例化两次,一次是在 Xamarin.Forms 创建它时;还有一次当 Prism 进行绑定时。不确定这是否正确......另外,我可以看到一个场景,我想在不同的时间将我的视图绑定到不同的ViewModels;例如,Android 与 iOS 的不同 VM 类。 Prism 允许我这样做,但我担心它不适用于存在 <ContentPage.BindingContext> 标签。
是否有支持/推荐的方式来识别我的 XAML 中的 ViewModel 仅用于设计时目的(即用于智能感知)但 Prism 的视图到视图模型绑定逻辑发生在运行时?我想我希望 <ContentPage.BindingContext> 标记被完全忽略,除非我在 Visual Studio 中编辑 XAML。
编辑:我上面的问题是不正确的,因为我期望看到的 XAML 视图 IntelliSense 不是由 Visual Studio 提供的,而是由 JetBrains ReSharper 提供的。下面描述的解决方案确实添加了预期的 IntelliSense 功能,但仅在安装了 ReSharper 的开发环境中(或者可能有其他 Visual具有此功能的 Studio 插件)。
【问题讨论】:
标签: forms xaml xamarin mvvm prism