Không chắc chắn nếu điều này giúp, nhưng có một cách tiếp cận tôi đã sử dụng trong quá khứ để tách các cột từ tiêu đề của họ và trình bày chúng một cách riêng biệt.
Các định nghĩa cột được định nghĩa trong các nguồn lực:
<UserControl.Resources>
<ResourceDictionary>
<GridViewColumnCollection x:Key="siColumnCollection">
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
...
</DataTemplate>
</GridViewColumn.CellTemplate>
<GridViewColumnHeader Content="Fish"/>
</GridViewColumn>
...
Sau đó, các tiêu đề và listview được trình bày riêng, cả hai tham khảo tài nguyên giống nhau:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<GridViewHeaderRowPresenter Columns="{StaticResource siColumnCollection}"/>
<ListView Grid.Row="1" ItemsSource="{Binding ViewModelList}">
<ListView.Resources>
<DataTemplate x:Key="siNormalRowTemplate">
<GridViewRowPresenter Columns="{StaticResource siColumnCollection}"/>
</DataTemplate>
</ListView.Resources>
</ListView>
</Grid>
(Tôi không thể hứa XAML này hoạt động chính xác như được viết, nhưng nó mang lại cho bạn ý tưởng).
Ưu điểm của sự sắp xếp này là bạn được tự do xử lý tiêu đề và phần chính của danh sách riêng biệt. Vì vậy, nếu bạn muốn đặt vào một số phụ ngay lập tức sau GridViewHeaderRowPresenter, bạn được tự do làm như vậy.
Chỉnh sửa: Giải pháp này hoạt động nếu bạn có GridView nhưng tiếc là không hoạt động đối với DataGrid. Tôi không thể nhìn thấy một cách tương đương để tách tiêu đề và hàng trong DataGrid để câu trả lời này sẽ chỉ hoạt động nếu bạn chuẩn bị trao đổi DataGrid cho GridView. Lấy làm tiếc!
Nguồn
2012-02-23 12:01:33
Đây là lựa chọn tốt hơn trong hai, và tôi có thể đặt một nền gradient trong đó để làm cho nó trông giống như tôi muốn nó . Tôi nghĩ rằng tôi đã thử điều này, thay đổi nền tảng trên DataGrid có nghĩa là, nhưng phát hiện ra rằng tôi muốn ghi đè vào phút cuối để ngăn các thay đổi của tôi có hiệu lực. :) –
Tuyệt vời. Chỉ trong trường hợp bạn đang tự hỏi, bạn có thể làm cho một bàn chải với hai bàn chải và không có gradient giữa hai bằng cách đặt hai điểm dừng ở cùng một vị trí. Như được mô tả ở đây: http://stackoverflow.com/questions/6546837/wpf-background-two-tone –