Tôi đang tìm cách thiết lập nền của một cột trong GridView WPF. Nhiều kết quả của Google đã hướng tới việc thiết lập GridViewColumn.CellTemplate để thay đổi diện mạo của một cột. Tuy nhiên, tôi gặp một vấn đề khi thiết lập màu nền; nó không kéo dài để điền vào các tế bào:Đặt nền cột trong WPF ListView/Gridview
Đây là XAML Tôi đang làm việc với:
<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>
Và xaml.cs cho biện pháp tốt:
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"},
};
}
}
Setting chiều rộng và chiều cao của Grid DataTemplate lớn hơn ô có lề âm có thể tạo ra kết quả gần, nhưng nếu bạn thay đổi kích thước cột, vấn đề sẽ tự hiển thị lại.
<Grid Background="Yellow" Height="22" Width="50" Margin="-6">
Có cách nào để điền vào ô có màu sắc?
Điều đó giúp bạn không phải đặt chiều rộng. Tuy nhiên, vẫn còn một khoảng cách giữa hai cột. Bất kỳ cách nào để đóng lên đó? – statenjason
Than ôi, GridViewRowPresenter mã hóa cứng Margin thành 6.0,6,0. Tôi e rằng đó sẽ là một lượng công việc hợp lý để giải quyết vấn đề này. –
Cách giải quyết hacky là đặt Lề của Lưới chứa thành -6,0, -6,0. –