Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# PropertyChangedCallback封装_C#_Wpf_Callback_Encapsulation - Fatal编程技术网

C# PropertyChangedCallback封装

C# PropertyChangedCallback封装,c#,wpf,callback,encapsulation,C#,Wpf,Callback,Encapsulation,这件事困扰了我一段时间,所以我问一位同事他是否能理解,现在我在这里 为什么可以在依赖属性的PropertyChangedCallback中访问保持类的私有成员? 让我通过这个例子进一步解释我的意思: /// <summary> /// Interaction logic for ZeControl.xaml /// </summary> public partial class ZeControl : UserControl {

这件事困扰了我一段时间,所以我问一位同事他是否能理解,现在我在这里

为什么可以在依赖属性的PropertyChangedCallback中访问保持类的私有成员? 让我通过这个例子进一步解释我的意思:

 /// <summary>
    /// Interaction logic for ZeControl.xaml
    /// </summary>
    public partial class ZeControl : UserControl
    {
        public ZeControl()
        {
            InitializeComponent();
        }

        private bool m_Trololo; //Please note that this field is PRIVATE!

        #region Text
        public string Text
        {
            get { return (string)GetValue(TextProperty); }
            set { SetValue(TextProperty, value); }
        }

        // Using a DependencyProperty as the backing store for Text.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty TextProperty =
            DependencyProperty.Register("Text", typeof(string), typeof(ZeControl), new UIPropertyMetadata(
                new PropertyChangedCallback((dpo, dpce) =>
                    {
                        ((ZeControl)dpo).m_Trololo = true; //How the hell?
                        //this.m_Trololo <-- would not compile, the callback is static.
                    })));
        #endregion
    }
这不是破坏性的封装吗?它是如何编译的

我这样问主要是因为我在WPF应用程序中使用了它:它允许我在回调中访问变量的同时保持变量的私有性。 但由于它真的感觉不太对劲,我不希望在WPF vNext中修复它,使我的应用程序不兼容

致以最良好的祝愿


bab.

回调是在拥有私有成员的同一个类中定义的,这种访问没有问题。私有实例成员似乎是从外部访问的,但您仍然在同一个类中,这似乎有些奇怪。

回调是在拥有私有成员的同一个类中定义的,这种访问没有错。看起来很奇怪,一个私有实例成员似乎是从外部访问的,但你仍然在同一个类中。

该死,你每天都会学到一些东西。在两年的编程生涯中,我从未尝试过像这样访问私人会员。在这里,我认为这是一个依赖性属性,一个莫名其妙的魔法。我真傻。谢谢不客气!如果你想看一些非常奇怪的东西,那么看看:我以前读过那篇文章。好几次,直到我真正理解xD,但在与哨兵对象战斗后,我一直在留意我的爱恨好友WPF的怪异之处。该死,你每天都能学到东西。在两年的编程生涯中,我从未尝试过像这样访问私人会员。在这里,我认为这是一个依赖性属性,一个莫名其妙的魔法。我真傻。谢谢不客气!如果你想看一些非常奇怪的东西,那么看看:我以前读过那篇文章。好几次,直到我真正理解xD,但在与哨兵对象战斗后,我一直在留意我的爱恨好友WPF的怪异之处。