将View+ViewModel声明为内部

本文关键字:内部 声明 View+ViewModel | 更新日期: 2023-09-27 18:00:18

不知怎么的,我遇到了一个无法解决的问题。

假设我们有一个视图:

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

以及注入的ViewModel:

 class TestViewModel
{
    public TestViewModel()
    {
    }
}

这在逻辑上会导致一个错误:

可访问性不一致:参数类型"TestViewModel"较小比方法"TestView"更容易访问。TestView’

因此,当我想将我的视图和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;
        }
    }

为什么

将View+ViewModel声明为内部

您会得到一个错误,因为xaml认为您的类是公共的,而您的代码后面说它是internal。将此添加到您的xaml x:ClassModifier="internal"

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