[英]Setting Column Background in WPF ListView/Gridview
我想在WPF GridView中設置一列的背景。 Google的許多結果都指向設置GridViewColumn.CellTemplate來更改列的外觀。 但是,設置背景顏色時遇到了問題; 它不會拉伸以填充單元格:
這是我正在使用的xaml:
<Window x:Class="ScratchPadWpf.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Width="300" Height="300">
<Grid>
<ListView ItemsSource="{Binding}">
<ListView.View>
<GridView>
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<Grid Background="Red">
<TextBlock Text="{Binding FirstName}"/>
</Grid>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<Grid Background="Yellow">
<TextBlock Text="{Binding LastName}"/>
</Grid>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</Grid>
</Window>
和xaml.cs可以很好地衡量:
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
DataContext = new[]
{
new {FirstName = "Jim", LastName = "Bob"},
new {FirstName = "Frank", LastName = "Smith"},
new {FirstName = "Tooth", LastName = "Paste"},
};
}
}
將DataTemplate的Grid的寬度和高度設置為大於具有負邊距的單元格可以產生接近的結果,但是如果您調整列的大小,問題將再次出現。
<Grid Background="Yellow" Height="22" Width="50" Margin="-6">
有沒有辦法用顏色填充單元格?
設置ItemContainerStyle
的HorizontalContentAlignment
:
<ListView ItemsSource="{Binding}">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListView.ItemContainerStyle>
</ListView>
結果:
挖了一個舊線程,但是我發現了一個躲避它的方法
<Grid Background="{Binding backGround}" Margin="-6,0,-6,0">
<TextBlock Margin="6,0,6,0" Text="{Binding myText}" TextAlignment="Right" />
</Grid>
移動頁邊距,使背景色填充整個單元格,然后將它們移回原處,以便文本仍位於正確的位置。 現在可以正常工作,直到正確修復為止。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.