WPF绘制表格-Grid+Border

本文详细介绍了如何利用WPF的Grid和Border组件来绘制表格,涵盖了布局设置、边框定义以及样式定制等内容,帮助开发者实现灵活且美观的前端表格展示。
摘要由CSDN通过智能技术生成
<Window x:Class="table_demo.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:table_demo"
        mc:Ignorable="d"
        Title="MainWindow" Height="650" Width="625">
    
    <!--WPF绘制表格并插入值-->
    <Grid>
        <!--Grid.RowDefinitions:将Grid分行-->
            <Grid.RowDefinitions>
                <RowDefinition Height="60*"/>
                <RowDefinition Height="60*"/>
                <RowDefinition Height="60*"/>
                <RowDefinition Height="60*"/</
在C#中,你可以使用Windows Forms控件如DataGridView或者ListView来创建复杂的表格,它们已经包含了丰富的样式和功能,不需要手动绘制每个单元格。如果你需要自定义鼠标绘制表格,可以利用WPF(Windows Presentation Foundation)平台,特别是Canvas或ItemsControl配合DataTemplate,但这通常会涉及到更复杂的UI编程。 以下是使用WPF手动绘制表格的一个简单示例: ```csharp using System.Windows; using System.Windows.Controls; public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); // 创建数据源 var data = new List<Dictionary<string, object>>() { {{"Name", "John"}, {"Age", 30}, {"City", "New York"}}, {{"Name", "Jane"}, {"Age", 25}, {"City", "London"}} }; // 渲染数据到Canvas foreach (var row in data) { Canvas canvasRow = new Canvas(); for (int i = 0; i < row.Count; i++) { FrameworkElement cell = CreateTableCell(row[i].Key, row[i].Value); canvasRow.Children.Add(cell); canvasRow.Width = double.NaN; // 自动调整宽度 } Grid.SetColumn(canvasRow, i); // 设置行数 grid.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto }); // 添加一行 grid.Children.Add(canvasRow); } } private FrameworkElement CreateTableCell(string header, object value) { TextBlock headerText = new TextBlock { Text = header }; TextBlock valueText = new TextBlock { Text = value.ToString() }; // 根据需求定制单元格样式,比如添加边框、改变颜色等 Border border = new Border { BorderBrush = Brushes.Black, BorderThickness = new Thickness(1) }; border.Child = new StackPanel { Orientation = Orientation.Horizontal, Children = {headerText, valueText} }; return border; } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值