2010-03-22 73 views
2

我有一個DataGrid顯示一些數據通過PagedCollectionView與一組定義。我創建了一個Style對應的DataGridRowGroupHeader,其中我添加了一個ControlTemplate,其中包含一個額外的TextBlock和間距Rectangle。我想將這些控件的寬度綁定到特定列的寬度,但我很努力使這個工作。我還想將TextBlockText屬性綁定到一個值。如何向DataGridRowGroupHeader添加其他數據?

我試圖通過在資源RectangleWidth屬性綁定寬度,但這沒有工作(可能是因爲Rectangle從來沒有引出,並因此沒有計算它的佈局)。然而,我相信這兩套綁定可以使用一個或多個ValueConverter實現的一些使用,但我想知道是否有更好的方法。可以通過定義ControlTemplate來實現這一點嗎?

回答

2

經過一些試驗和錯誤,我能夠自定義我的行組標題。解鎖解決方案的關鍵涉及DataGrid上的RowGroupHeaderStyles屬性和LoadingRowGroup事件。

通過爲組定義一個或多個樣式,我可以自定義控件模板以包含其他命名元素。然後,我使用該事件訪問這些元素,並設置或綁定相關值以顯示我需要的信息。我遇到的唯一絆腳石涉及到綁定控件的大小,我最終通過保存對每行的引用並在需要刷新它們時設置這些大小而不是依賴綁定來解決這些問題。這可能是特定於我的項目,所以你的里程可能會有所不同。

更新
JDM問你怎麼弄的控件執行在LoadingRowGroup事件處理程序綁定等。您可以從事件參數的DataGridRowGroupHeaderEventArgs.RowGroupHeader屬性中獲取行標題,然後使用VisualTreeHelper獲取標題的子控件。一旦擁有了控件,就可以像使用其他控件一樣將它們綁定到代碼中。

+0

最初由JDM提問:Jeff,您如何訪問這些元素(例如ToogleButton或Textblock)並設置或綁定相關值以顯示您在LoadRowGroup事件中所需的信息? – 2011-04-20 18:00:18

+0

您如何在LoadRowGroup中獲取標題屬性值。請問您的代碼。 – Hukam 2011-08-06 08:43:55

+0

@HukmChand:對不起,我寫了不正確的信息。我糾正了它。 – 2012-01-11 20:33:17