example databinding bindingcontext c# wpf xaml data-binding internal

bindingcontext - combobox databinding c#



Enlace a ViewModel-Property interno (1)

Tengo un UserControl con una clase ViewModel como 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>

Código detrás:

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

Clase ViewModel:

namespace DotfuscatorTest.UserControl.ViewModel { public class UserControlViewModel { private string viewModelProperty = "hello world"; internal string ViewModelProperty { get { return viewModelProperty; } set { viewModelProperty = value; } } } }

Si configuro ViewModelProperty en público, el enlace funciona bien. Pero si configuro la propiedad en interno como arriba, el enlace falla (error de enlace: propiedad no encontrada ...).

Pensé que una propiedad interna es accesible como pública en la misma asamblea. También puedo acceder a la propiedad desde UserControl-codebehind sin ningún problema:

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

¿Alguna explicación para este comportamiento?

Gracias de antemano, rhe1980


Como se indica aquí

Las propiedades que utiliza como propiedades de origen de enlace para un enlace deben ser propiedades públicas de su clase. No se puede acceder a las propiedades de interfaz explícitamente definidas para fines vinculantes, ni tampoco a las propiedades protegidas, privadas, internas o virtuales que no tienen una implementación básica.