c# - आंतरिक देखें मोडेल-संपत्ति के लिए बाध्य



wpf xaml (1)

मेरे पास एक 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();         
      }
   }
}

देखेंमोडेल वर्ग:

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

      internal string ViewModelProperty
      {
        get { return viewModelProperty; }
        set { viewModelProperty = value; }
      }
   }
}

यदि मैं ViewModelProperty को सार्वजनिक करने के लिए बाइंडिंग ठीक काम करता है लेकिन अगर मैं संपत्ति को बंधन से ऊपर की तरह आंतरिक रूप से सेट करता हूं (बाइंडिंग त्रुटि: संपत्ति नहीं मिली ...)।

मैंने सोचा था कि एक आंतरिक संपत्ति एक ही विधानसभा में सार्वजनिक रूप से पहुंच योग्य है। इसके अलावा मैं किसी भी समस्या के बिना UserControl-codebehind से संपत्ति तक पहुंच सकता हूं:

{
...

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

...

इस व्यवहार के लिए कोई स्पष्टीकरण?

अग्रिम धन्यवाद, rhe1980


जैसा कि यहां बताया गया है

जिन गुणों का उपयोग आप बंधन के लिए बाध्यकारी स्रोत गुणों के रूप में करते हैं, वे आपकी कक्षा के सार्वजनिक गुण हैं। स्पष्ट रूप से परिभाषित इंटरफ़ेस गुणों को बाध्यकारी उद्देश्यों के लिए उपयोग नहीं किया जा सकता है, न ही सुरक्षित, निजी, आंतरिक या आभासी गुण हैं जिन्हें कोई आधार कार्यान्वयन नहीं है।





internal