簡體   English   中英

在WPF ListView / Gridview中設置列背景

[英]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">

仍然丑陋

有沒有辦法用顏色填充單元格?

設置ItemContainerStyleHorizontalContentAlignment

<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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM