2017-07-07 41 views
-4

我注意到第一列标题和控件的左边缘之间存在间隙。我怎样才能删除它?如何在wpf ListView的第一列之前删除间隙?

+0

插入显示你的问题的图像。还要尝试检查ListView的可视化树来找出这个间隙出现的位置。 Visual Studio中有内置的检查器,但我更喜欢WPF Snoop。 – Maxim

回答

1

你可以降低ListViewPaddingGridViewHeaderRowPresenterMargin

<ListView ... Loaded="lv_Loaded"> 

private void lv_Loaded(object sender, RoutedEventArgs e) 
{ 
    ListView lv = sender as ListView; 
    lv.Padding = new Thickness(-2, -1, -2, -1); 
    GridViewHeaderRowPresenter presenter = FindChild<GridViewHeaderRowPresenter>(lv); 
    if (presenter != null) 
     presenter.Margin = new Thickness(1, 0, 2, 0); 
} 

private static T FindChild<T>(DependencyObject dependencyObject) where T : DependencyObject 
{ 
    if (dependencyObject == null) return null; 

    for (int i = 0; i < VisualTreeHelper.GetChildrenCount(dependencyObject); i++) 
    { 
     var child = VisualTreeHelper.GetChild(dependencyObject, i); 

     var result = (child as T) ?? FindChild<T>(child); 
     if (result != null) return result; 
    } 
    return null; 
} 
+0

对不起,它让我花了一段时间来解决这个问题。 FindChild在哪里定义?这是否需要写出来? – Shane

+0

这是一个辅助方法。看我的编辑。 – mm8

+0

感谢您为此尝试了这一点,它似乎工作。你是如何得到用于填充和保证金的价值的 - 你是否使用过Snoop或类似的东西? – Shane

相关问题