一、WPF GridView樣式
GridView是WPF中最重要的數據控制項之一,可以以很多不同的樣式展示數據。WPF GridView可以使用Style屬性自定義樣式。
下面是一個自定義GridView的樣例,包括兩個行定義和兩個列定義:
<ListView.View>
<GridView AllowsColumnReorder="False">
<GridView.Columns>
<GridViewColumn Header="First Name" Width="120" DisplayMemberBinding="{Binding FirstName}"></GridViewColumn>
<GridViewColumn Header="Last Name" Width="120" DisplayMemberBinding="{Binding LastName}"></GridViewColumn>
</GridView.Columns>
</GridView>
</ListView.View>
上面的代碼指定了兩個列,第一個使用”FirstName”屬性作為標題和列中的每一行的展示項,第二個類似。在這個樣例中,無法拖動列,因為AllowsColumnReorder=”False”。
二、WPF GridViewColumn
WPF GridViewColumn控制項定義了WPF GridView的列。我們可以使用HeaderTemplate屬性定製列頭,CellTemplate屬性定製列的數據單元格。
下面是一個WPF GridViewColumn的樣例:
<GridView AllowsColumnReorder="False">
<GridViewColumn Header="First Name" Width="120">
<GridViewColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" FontWeight="Bold" TextAlignment="Left" Foreground="Blue"/>
</DataTemplate>
</GridViewColumn.HeaderTemplate>
</GridViewColumn>
</GridView>
三、WPF GridView 行號
WPF GridView控制項不支持自動添加行號。要在GridView中添加行號,需要添加一個額外的列。該列應該顯示當前行的行號。我們可以使用如下代碼來創建一個包含行號的GridView:
<GridView x:Name="gridView">
<GridView.Columns>
<GridViewColumn Header="#" Width="50" DisplayMemberBinding="{Binding index}" />
...
</GridView.Columns>
</GridView>
下面是在代碼中為WPF GridView添加行號的方法:
for (int i = 0; i < gridView.Items.Count; i++)
{
var gridViewRow = (GridViewRow)gridView.ItemContainerGenerator.ContainerFromIndex(i);
if (gridViewRow != null)
{
var cell = new TextBlock();
cell.Text = (i + 1).ToString();
cell.HorizontalAlignment = HorizontalAlignment.Center;
cell.VerticalAlignment = VerticalAlignment.Center;
cell.FontWeight = FontWeights.Bold;
gridViewRow.Header = cell;
}
}
四、WPF GridView橫向
GridView的默認行為是豎向排列。要將GridView設置為橫向,請添加以下樣式代碼:
<GridView.LayoutTransform>
<RotateTransform Angle="-90"/>
</GridView.LayoutTransform>
五、WPF GridView Wrap
GridView默認不支持數據的摺疊。要在WPF GridView中開啟這個特性,我們需要使用ItemTemplate屬性。通過設置ItemTemplate,我們可以控制如何顯示每一行中的數據。下面是一個WrapPanel內的GridView示例:
<GridView x:Name="gridView">
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</GridView.ItemsPanel>
<GridView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Source="{Binding Image}" Width="100" Height="100" />
<TextBlock Text="{Binding Name}" Margin="10,0,0,0" />
</StackPanel>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
六、WPF GridView固定列
要固定GridView中一列,我們需要在該列上設置固定寬度並將其鎖定在屏幕的左側或右側。下面是一個ColumnDefinition中鎖定一列的樣例:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<ListView Grid.Column="1" ItemsSource="{Binding Items}">
<ListView.View>
<GridView>
<GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}" Width="100" />
<GridViewColumn Header="Description" DisplayMemberBinding="{Binding Description}" />
</GridView>
</ListView.View>
</ListView>
</Grid>
七、WPF GridView大量刷新
當GridView中的數據發生變化,我們需要刷新整個GridView以更新UI。在大量數據的情況下,刷新整個控制項可能很慢。對於這種情況,我們可以使用以下代碼優化刷新過程:
var gridView = (GridView)listView.View;
gridView.Columns.Clear();
AddColumns(gridView);
listView.Items.Refresh();
八、WPF GridView設置行高
要設置GridView的行高,我們可以使用RowHeight屬性。以下是設置GridView行高為25的示例:
<GridView RowHeight="25">
...
</GridView>
九、WPF GridView列加懸浮框
WPF GridView列可以添加懸浮框。我們可以在GridViewColumnHeader上添加你的用於顯示懸浮框的控制項。以下是一個GridView列添加懸浮框的示例:
<GridViewColumn Header="First Name">
<GridViewColumnHeader.ContentTemplate>
<DataTemplate>
<TextBlock Text="First Name" />
</DataTemplate>
</GridViewColumnHeader.ContentTemplate>
<GridViewColumnHeader.ToolTip>
<StackPanel>
<TextBlock Text="Column Information" FontWeight="Bold" />
<TextBlock Text="Column displays the first name." Margin="10,0,0,0" />
</StackPanel>
</GridViewColumnHeader.ToolTip>
</GridViewColumn>
以上是WPF GridView的一些常用技術,在實際開發中可以根據需求進行相應的應用。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/256497.html