2017-07-07 44 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

相關問題