2
在我的Windows.Resources我有以下列定義:編程方式添加一個DataGrid列使用自定義頭的DataGrid
<DataGridTextColumn x:Key="CustomColumn" x:Shared="False">
<DataGridTextColumn.Header>
<StackPanel>
<Label Padding="0" Name="labelA"/>
<Separator HorizontalAlignment="Stretch"/>
<Label Padding="0" Name="labelB"/>
</StackPanel>
</DataGridTextColumn.Header>
</DataGridTextColumn>
我有一個會從我的ViewModel發射並增加了以下「CustomColumn」事件到我的DataGrid:
var column = FindResource("CustomColumn") as DataGridTextColumn;
var label = FindName("labelA") as Label;
label.Content = string.Format("A {0}", i);
DataGrid1.Columns.Add(column);
問題是,我將如何更改CustomColumn頭內的兩個標籤的內容?我上面的代碼失敗,因爲它無法找到「labelA」。 (添加列的作品,但我也需要設置這些標籤)。我的猜測是,我需要通過VisualTree找到它 - 但我想確保我沒有做任何其他錯誤。
感謝您的幫助。
謝謝你瑞秋。我會試試這個,讓你知道它是如何工作的。 - 我只是不確定是不是因爲Visual Tree。對於我的情況,上述解決方案是最好的方法嗎? –
@iimpact只需重新閱讀您的問題,並且它不會將新列動態添加到您的DataGrid(除非您只添加一列)。原因是你正在重新使用你的'DataGridTextColumn'的單個實例。如果您嘗試添加該單一實例的第二個副本,則會有兩列包含完全相同的標題和數據,因爲您引用的是同一列的實例。要動態添加列到DataGrid,您需要在每次需要新列時創建一個新的「DataGridTextColumn」。 – Rachel
好的,非常感謝。我知道如何以編程方式創建文本列,但自定義標題將如何完成? –