绑定到内部ViewModel-Property

rhe*_*980 9 c# data-binding wpf xaml internal

我有一个带有ViewModel类的UserControl作为DataContext:

XAML

<UserControl x:Class="DotfuscatorTest.UserControl.View.UserControlView"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         mc:Ignorable="d" >    
<StackPanel>
  <TextBox Text="{Binding ViewModelProperty}"/>
</StackPanel>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

代码隐藏:

namespace DotfuscatorTest.UserControl.View
{
   using ViewModel;
   public partial class UserControlView
   {
      public UserControlView()
      {
         InitializeComponent();
         DataContext = new UserControlViewModel();         
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

ViewModel类:

namespace DotfuscatorTest.UserControl.ViewModel
{
   public class UserControlViewModel
   {
      private string viewModelProperty = "hello world";

      internal string ViewModelProperty
      {
        get { return viewModelProperty; }
        set { viewModelProperty = value; }
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

如果我将ViewModelProperty设置为public,则绑定工作正常.但是,如果我将属性设置为内部,如上所述绑定失败(绑定错误:找不到属性...).

我认为内部属性可以在同一个程序集中像public一样访问.此外,我可以从UserControl-codebehind访问该属性没有任何问题:

{
...

((UserControlViewModel)DataContext).ViewModelProperty = "hallo viewmodel";

...
Run Code Online (Sandbox Code Playgroud)

对此行为的任何表述?

提前谢谢,rhe1980

Jle*_*HeP 19

如前所述这里

用作绑定的绑定源属性的属性必须是类的公共属性.无法为绑定目的访问显式定义的接口属性,也不能访问没有基本实现的受保护,私有,内部或虚拟属性.