为什么不用系统自带的datagrid控件呢,原因是列表标题是动态的,用系统自带的控件一时我还没想到怎么解决,于是就想了一个办法:自己动手写datagrid控件,其实也很简单。。。
一、列表标题
(1)新建自定义标题控件:
<UserControl x:Class="SJZD.OverrideControl.Task_TaskNoListTitle"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d" Loaded="UserControl_Loaded"
d:DesignHeight="50" d:DesignWidth="900">
<Border x:Name="List_Border" Width="900"
BorderBrush="#CFD6E0" BorderThickness="0">
<Grid x:Name="grid" HorizontalAlignment="Stretch"></Grid>
</Border>
</UserControl>
后台代码:
using Newtonsoft.Json.Linq;
using SJZD.Code;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace SJZD.OverrideControl
{
/// <summary>
/// Task_TaskNoList.xaml 的交互逻辑
/// </summary>
public partial class Task_TaskNoListTitle : UserControl
{
JArray Cells;
public Task_TaskNoListTitle(JArray cells)
{
InitializeComponent();
Cells=cells;
}
private void Init()
{
System.Threading.Tasks.Task.Factory.StartNew(() =>
{
try
{
Dispatcher.Invoke(new Action(() =>
{
if (Cells != null)
{
int colCount = Cells.Count;
for (int c = 0; c < colCount; c++)
{