【发布时间】:2017-04-26 16:25:07
【问题描述】:
我对 C# 和 WPF 都很陌生,但我正在从事的项目似乎非常适合他们。我有一个基于数据库设置的动态标签网格。我需要将它们设置为拖放。我有一些标签设置为标题,它们是根据接下来的七个星期五填充的。我做了一个函数来从数据库中提取数据并将每个日期与标题标签内容的内容进行比较。然后我为每个与标题匹配的日期制作包含工作编号和状态的标签。
加载时有点像这样
内容 = Job# + " " + JobState
-日期+7n----日期+7n----日期+7n----日期+7n----日期+7n----日期+7n-----日期+7n
内容-----内容-----内容-----内容-----内容-----内容-----内容
内容-----内容-----内容-----内容-----内容-----内容-----内容
内容-----内容-----内容-----内容-----内容------内容
内容---------------------内容--------内容--- --内容-----内容
内容---------------------内容--------内容--- ------------------内容
几乎当日期用完作业时,它就不再为该列制作标签了。
我试图让它尽可能动态和可扩展,所以我有一个前进和后退按钮,可以将所有日期向上推一周或一周后推,然后根据顶部的新日期重新填充网格。
private void AddLabel(ref int rowNum, string val, List<string>[] datGrid)
{
int rowLen;
int margin1;
int margin2;
var lb = new Label();
lb.HorizontalAlignment = HorizontalAlignment.Left;
lb.VerticalAlignment = VerticalAlignment.Top;
lb.Height = 32;
lb.Width = 155;
rowLen = datGrid[rowNum].Count;
lb.AllowDrop = true;
margin1 = 25 + (200 * (rowNum));
margin2 = 10 + (40 * (rowLen));
var gName = "grid" + (rowNum + 1) + (rowLen + 1);
lb.Margin = new Thickness(margin1, margin2, 0, 0);
lb.Content = val;
lb.Name = gName;
dyGrid.Children.Add(lb);
}
我将需要添加标签的行号作为 rowNum,标签的实际内容作为 val,将 datGrid 作为包含所有标签名称的列表数组。我只是不知道如何在制作时向标签添加 mouseDown 或其他拖放事件。
【问题讨论】: