Невозможно добавить generi c DependencyObject в качестве логического ребенка в FrameworkElement - PullRequest
0 голосов
/ 28 апреля 2020

Недавно я немного возился с некоторыми сторонними элементами управления WPF и столкнулся с некоторым тупиком.

Я расширил один из объектов (производный от DependencyObject), чтобы включить Удобство DependencyProperty в мысли, что я смогу привязать к нему. Однако, поскольку рассматриваемый объект не является FrameworkElement, он не включается в логическое дерево, и, следовательно, мое связывание с использованием RelativeSource не разрешается правильно, что приводит к ошибке «Не удается найти источник для привязки ....

Чтобы обойти это, я мог бы использовать StaticResources (который работает нормально), но просто для проверки этого я попытался добавить элемент управления в логическое дерево основного FrameworkElement с помощью AddLogicalChild. Всякий раз, когда я делаю это, объект не становится родительским. Тестирование в другом контексте:

        public MainWindow()
        {
            InitializeComponent();
            DependencyObject obj = new DependencyObject();
            FrameworkElement el = new FrameworkElement();
            this.AddLogicalChild(obj);
            this.AddLogicalChild(el);

            var objParent = LogicalTreeHelper.GetParent(obj);
            //This will return null

            var elParent = LogicalTreeHelper.GetParent(el);
            //This will return our Window
        }

Я просто не понимаю что-то, стоящее за концепцией логического дерева или концепции объекта зависимости? Похоже (из описания), что я должен быть в состоянии родить все, что происходит от DependencyObject в логическом дереве.

...