c# - 我能以某种方式告诉 Resharper ViewModel 的类型吗?

标签 c# mvvm resharper

我们在不同的程序集中有 Views 和 ViewModels。 View 的程序集具有对 VM 的引用。 (有时我们需要隐藏代码)。

ViewModel 的 DataContext 是在代码中设置的,而不是在 XAML 中。因此,无论是 VS 还是 Resharper 都无法像智能感知那样提供帮助,Resharper 也会给出很多警告。

我们是否可以在 XAML 注释中为 Resharper 设置任何指令,以表明我们打算将 View 与特定类型的 VM 一起使用?

更新:

不错 blogpost作为已接受答案的补充。

最佳答案

我遇到了同样的问题,并通过使用 XAML 中的设计时支持在 XAML 编辑器中获得智能感知支持来解决它,该编辑器也满足 Resharper 绑定(bind)验证。

请注意以下代码片段中使用的 d: 命名空间。这将在运行时被忽略。您还可以使用 ViewModelLocator,它将设计时(假)存储库添加到 IoC 容器中,从而删除来自外部源(如 Web 服务或其他数据源)的任何依赖项。

XAML 设计时支持:

<local:ViewBase
    ...
    mc:Ignorable="d" 
    d:DataContext="{Binding Source={d:DesignInstance Type=viewModel:MainViewModel, IsDesignTimeCreatable=True}}">

XAML View 模型定位器:

<local:ViewBase
    ...
    mc:Ignorable="d" 
    viewModel:ViewModelLocator.ViewModel="MainViewModel" >

View 模型定位器:

    static ViewModelLocator()
    {
        if (DesignMode.DesignModeEnabled)
        {
            Container.RegisterType<IYourRepository, YourDesignTimeRepository>();
        }
        else
        {
            Container.RegisterType<IYourRepository, YourRuntimeRepository>();
        }

        Container.RegisterType<YourViewModel>();
    }

关于c# - 我能以某种方式告诉 Resharper ViewModel 的类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13863099/

相关文章:

c# - 恢复 ListView 状态 MVVM

javascript - Knockoutjs valueHasMutated 无法正常工作

c# - Visual Studio/ReSharper 代码格式化 - C#

java - 创建jni4.jar文件时显示 'javac' 无法识别为内部或外部命令、可运行程序或批处理文件

c# - 当有大量消息排队时,从 MSMQ 读取速度变慢

wpf - DomainCollectionView单元测试

resharper - StyleCop,优点/缺点

coding-style - Resharper:如何在类的底部强制引入新的私有(private)字段?

c# - 如何创建 Web 浏览器控件可以使用的本地服务器

c# - 如何将 Observable Collection 上的空数据解析为数据网格绑定(bind)?