DocumentViewer删除ToolBar投影

时间:2017-01-30 04:59:06

标签: c# wpf toolbar dropshadow documentviewer

我已经阅读了很多关于在DocumentViewer Control中删除工具栏或搜索栏的主题,但我无法删除工具栏的阴影效果。

你有什么想法吗?

我已经控制了控制的孩子,但它不起作用。

enter image description here

1 个答案:

答案 0 :(得分:1)

这是可视化树(所选矩形是您引用的投影):

enter image description here

以下代码隐藏了Rectangle:

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;
    }
}