gpt4 book ai didi

c# - ViewModel 成员的可见性应该是多少?

转载 作者:太空狗 更新时间:2023-10-29 18:20:21 25 4
gpt4 key购买 nike

我遇到了一个有趣的问题,但我还没有找到任何解释...

鉴于下面非常简单的 MVVM WPF 应用程序,为什么仅当列表在 ViewModel 中的可见性设置为 public 时才绑定(bind)到组合框?

TestList 可见性更改为 internal 不会在编译时引发错误或警告,但会在运行时将组合框留空。

引用 the official documentation : internal 类型或成员只能在同一程序集中的文件中访问。

尽管 View 和 ViewModel 是在同一个程序集中定义的,但这个问题还是会发生。

代码如下:

型号:

class TestModel
{
internal List<string> Musketeers { get; private set; }

public TestModel()
{
Musketeers = new List<string> { "Athos", "Porthos", "Aramis" };
}
}

查看:

<Window x:Class="TestWpfApplication.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<ComboBox Width="250" Height="25" ItemsSource="{Binding TestList}" />
</Grid>
</Window>

View 模型:

class TestViewModel : INotifyPropertyChanged
{
TestModel myModel = new TestModel();

public List<string> TestList
{
get
{
return myModel.Musketeers;
}
}

// INotifyPropertyChanged members are below ...
}

最佳答案

ViewModelinternal View 的访问权限可见, 但对 Binding 不可见类,它真正使绑定(bind)起作用。

{Binding TestList}转化为Binding类实例,它不知道 internal你的成员(member)ViewModel类。

关于c# - ViewModel 成员的可见性应该是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15396510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com