【发布时间】:2012-08-17 11:09:17
【问题描述】:
我有一个带有 ViewModel 类作为 DataContext 的 UserControl:
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>
代码隐藏:
namespace DotfuscatorTest.UserControl.View
{
using ViewModel;
public partial class UserControlView
{
public UserControlView()
{
InitializeComponent();
DataContext = new UserControlViewModel();
}
}
}
ViewModel 类:
namespace DotfuscatorTest.UserControl.ViewModel
{
public class UserControlViewModel
{
private string viewModelProperty = "hello world";
internal string ViewModelProperty
{
get { return viewModelProperty; }
set { viewModelProperty = value; }
}
}
}
如果我将 ViewModelProperty 设置为 public,则绑定可以正常工作。但是如果我像上面一样将属性设置为内部绑定失败(绑定错误:找不到属性...)。
我认为在同一个程序集中可以像 public 一样访问内部属性。我也可以毫无问题地从 UserControl-codebehind 访问该属性:
{
...
((UserControlViewModel)DataContext).ViewModelProperty = "hallo viewmodel";
...
对这种行为有什么解释吗?
提前致谢, rhe1980
【问题讨论】:
-
您之前应该看过 DataBinding 文档。
标签: c# wpf xaml data-binding internal