[英]WPF How to create a grid that can scroll with static column and row header
我創建了一個具有列和行標題的自定義網格。 網格中的單元格為空。 我想做的是針對滾動創建一個類似excel的行為。 我需要添加一個水平和垂直滾動條。 當您垂直滾動時,我需要將列標題保留在原處,並且需要行標題進行滾動。 當您水平滾動時,我需要將行列保持在原位,並且需要滾動列標題。 這是我目前用於網格的代碼:
<Canvas x:Name="canvas_blueprint" ClipToBounds="True" Width="{Binding ActualWidth, ElementName=canvas}" Height="{Binding ActualHeight, ElementName=canvas}">
<DockPanel>
<Grid x:Name="grid_column_header" DockPanel.Dock="Top" Height="25" Width="{Binding ActualWidth, ElementName=canvas}"></Grid>
<Grid x:Name="grid_row_header" DockPanel.Dock="Left" Width="25" Height="{Binding ActualHeight, ElementName=canvas}" Margin="0,-25,0,0"></Grid>
<Grid x:Name="grid_blueprint" DockPanel.Dock="Right" Height="{Binding ActualHeight, ElementName=image_blueprint}" Width="{Binding ActualWidth, ElementName=image_blueprint}">
<Grid.Background>
<ImageBrush x:Name="imagebrush_blueprint"/>
</Grid.Background>
</Grid>
</DockPanel>
</Canvas>
基本上,它是一個帶有包含3個網格的停靠面板的畫布。 標頭包含2個網格,內部單元格包含1個網格。 單元是動態創建的。
我正在制作自定義網格,因為我需要在網格上覆蓋一個背景圖像。 我嘗試使用免費的電子表格控件,但沒有找到可以帶有背景圖片的控件。 網格需要具有的唯一其他行為是選擇一個單元格或一系列單元格的能力。
我已經嘗試過使用網格滾動條和scrollviewer,但這會使線條不規則且不均勻。 我對WPF編程並不陌生,但距離專家不遠。 任何幫助,將不勝感激。
我只會使用一個簡單的DataGrid
。 它已經自動凍結了標題,並且您可以通過FrozenColumnCount
屬性凍結列。
您可以通過將Background
屬性設置為ImageBrush
來獲得背景圖像。
通過將SelectionMode
設置為DataGridSelectionMode.Extended
可以控制選擇范圍。
這是將特殊背景顏色和其他類型的格式應用於單個單元格的方法:
<DataGrid.CellStyle>
<Style TargetType="{x:Type wpf:DataGridCell}">
<Setter Property="Background" Value="{Binding SomeColorProperty, Converter={StaticResource cellBackgroundConverter}}" />
<Setter Property="FontWeight" Value="{Binding SomeWeightProperty, Converter={StaticResource cellWeightConverter}}" />
.....
</Style>
</DataGrid.CellStyle>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.