fhn*_*eer 10 c# wpf binding mvvm
我正在使用MVVM尝试一些不同的东西.在我们的ViewModel中,绑定到View的属性是公共的.我正在举一个按钮绑定的例子.这是一个简单的例子.
View.xaml:
<Button Content="Test Button" Command="{Binding TestButtonCommand}" />
Run Code Online (Sandbox Code Playgroud)
ViewModel.cs
private ICommand _testButtonCommand;
public ICommand TestButtonCommand
{
get { return _testButtonCommand?? (_testButtonCommand= new RelayCommand(SomeMethod)); }
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,我们可以制作TestButtonCommand内部而非公开吗?内部意味着它可以被当前项目访问,所以他们不应该有任何问题吗?但是,当我试图这样做时,它没有奏效.在getter中添加断点没有被击中.那么为什么我们不能把它作为内部.
这是msdn的链接.
http://msdn.microsoft.com/en-us/library/ms743643.aspx
用作绑定的绑定源属性的属性必须是类的公共属性.无法为绑定目的访问显式定义的接口属性,也不能访问没有基本实现的受保护,私有,内部或虚拟属性.
为什么我们不能这样做?如果访问内部与公共相同,如果在同一项目中工作.那么为什么我们不能在这里使用内部.必须有一个原因,这些应该是公开的,我正在寻找这个理由.
internal ICommand TestButtonCommand { ...... }
Run Code Online (Sandbox Code Playgroud)
Roh*_*ats 21
如果访问内部与公共相同,如果在同一项目中工作.那么为什么我们不能在这里使用内部.必须有一个原因,这些应该是公开的,我正在寻找这个理由.
您只回答了问题,因为内部只能在同一个程序集中访问,而不能从外部访问.这是绑定到内部结构不起作用的唯一原因,因为绑定是通过绑定引擎解决的,而不是由程序集解决,PresentationFramework.dll如果您正在寻找它,则在单独的程序集中解析它.
Binding仅支持公共属性.MSDN参考:
http://msdn.microsoft.com/en-us/library/ms743643.aspx
正如参考文献中引用的那样
用作绑定的绑定源属性的属性必须是类的公共属性.无法为绑定目的访问显式定义的接口属性,也不能访问没有基本实现的受保护,私有,内部或虚拟属性.