WPF GridViewで列の背景を設定したいと思っています。多くのGoogleの結果は、GridViewColumn.CellTemplateを設定して列の外観を変更することを指摘しています。しかし、私は、背景色を設定するときに問題を抱えています。それはセルを埋めるためにストレッチではないです:WPFで列の背景を設定するListView/Gridview
<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:
をここで私が働いているXAMLだ
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 Background="Yellow" Height="22" Width="50" Margin="-6">
色でセルを埋めるための方法はありますか?
<ListView ItemsSource="{Binding}">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListView.ItemContainerStyle>
</ListView>
結果:
これは、幅を設定する必要はありません。ただし、2つの列の間にはまだギャップがあります。それを閉じる方法はありますか? – statenjason
悲しいことに、GridViewRowPresenterは余白を6,0,6,0にハードコーディングします。私はこれを回避するにはかなりの労力が必要だと恐れています。 –
問題を解決するには、グリッドの余白を-6,0、-6,0に設定します。 –