DocumentViewer удаляет тень панели инструментов

Я прочитал много тем об удалении панели инструментов или панели поиска в элементе управления DocumentViewer, но я не могу удалить эффект тени на панели инструментов.

У вас есть идея?

Я зациклился на дочерних элементах управления, но это не работает.

введите здесь описание изображения


person Clint.Network    schedule 30.01.2017    source источник
comment
вам не нужен xaml.... это свойства по умолчанию для всех элементов управления DocumentViewer   -  person Clint.Network    schedule 31.01.2017


Ответы (1)


Вот визуальное дерево (выбранный прямоугольник — это тень, на которую вы ссылаетесь):

введите здесь описание изображения

Следующий код скрывает прямоугольник:

class MyDocumentViewer : DocumentViewer
{
    public void RemoveToolbarShadow()
    {
        var r = this.FindType<System.Windows.Controls.Border>()?
            .FindType<Grid>()?
            .FindType<DockPanel>()?
            .FindType<System.Windows.Shapes.Rectangle>();

        if (null != r) r.Visibility = Visibility.Hidden;
    }
}

Вспомогательное расширение:

static class DependencyObjectExtensions
{
    internal static T FindType<T>(this DependencyObject reference) where T : DependencyObject
    {
        int n = VisualTreeHelper.GetChildrenCount(reference);
        for (int i = 0; i < n; i++)
        {
            var c = VisualTreeHelper.GetChild(reference, i) as T;
            if (null != c) return c;
        }
        return null;
    }
}
person Frank    schedule 17.04.2018