将View + ViewModel声明为内部

时间:2014-04-25 07:53:55

标签: c# wpf mvvm

不知怎的,我遇到了一个我无法弄清楚的问题。

假设我们有一个视图:

public partial class TestView : UserControl
    {
        public TestView(TestViewModel vm)
        {
            InitializeComponent();

            DataContext = vm;
        }
    }

注入的ViewModel:

 class TestViewModel
{
    public TestViewModel()
    {

    }
}

这在逻辑上会导致错误:

  

可访问性不一致:参数类型“TestViewModel”较少   比方法'TestView.TestView'

可访问

所以当我想将我的View和ViewModel声明为内部时:

internal class TestViewModel
    {
        internal TestViewModel()
        {

        }
    }

这有效:

partial class TestView : UserControl
    {
        TestView(TestViewModel vm)
        {
            InitializeComponent();

            DataContext = vm;
        }
    }

但这不是:

internal partial class TestView : UserControl
    {
        internal TestView(TestViewModel vm)
        {
            InitializeComponent();

            DataContext = vm;
        }
    }

为什么吗

1 个答案:

答案 0 :(得分:1)

您收到错误,因为xaml认为您的类是公开的,而后面的代码表示它是internal。将其添加到您的xaml x:ClassModifier="internal"

<UserControl x:Class="YourNamespace.TestView " x:ClassModifier="internal"