WPF: Система. ArgumentException => {“'{0}' не является Визуальным или Visual3D”.}

когда я дважды щелкаю - или щелчок однажды, когда его уже сфокусированный - ниже объектов в пустой области Поля списка, которое является в моем DataGridTemplateColumn затем, я получаю вышеупомянутое сообщение об ошибке.

ЧТО делает меня неправильно?

Это - мой Код:


    
        
            
                
                
                                                   
                    
                                                                   
                                                                            
                                
                                                                        
                        
                                                         
                
            
        
    
 

Отношение, которые отображают, где я нажимаю ниже "myPhotos.png" записи объекта: alt text
(источник: 666kb.com)

Править: эта ошибка также уже видима в XAML с помощью подсказки, просто не видели ту ошибочную подсказку...

6
задан Glorfindel 25 June 2019 в 04:03
поделиться

1 ответ

Это действительно похоже на ошибку. Я запустил ваш проект воспроизведения и проверил стек вызовов при возникновении исключения. Это происходит в DataGridCell.RemoveBindingExpressions во время вызова VisualTreeHelper.IsAncestorOf. Последний метод вызывает исключение, когда ему передается объект, не являющийся Visual или Visual3D. Но DataGridCell передает ему любой элемент, являющийся целью привязки. В вашем случае это Run, который не является производным от Visual.

Я подумал, что вы могли бы обойти это, используя IValueConverter для создания FlowDocument и привязав RichTextBox.Document, чтобы привязка применялась к RichTextBox. Но поскольку Document не является свойством зависимости, он не может быть целью привязки.

Вместо этого вы, возможно, захотите создать UserControl, в котором размещен элемент управления RichTextBox:

<DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
        <Local:HomeworkControl Text="{Binding Homework}" />
    </DataTemplate>
</DataGridTemplateColumn.CellTemplate>

Затем в этом пользовательском элементе управления вы позаботитесь о создании RichTextBox, документа, запуска и т. Д. К сожалению, я думаю, что это просто ограничение (также известное как ошибка) в элементе управления DataGrid.

9
ответ дан 8 December 2019 в 12:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: