c#-如何从数据库自动在网格上生成用户控件?数据库中的一行作为网格上的一个usercontrol
发布时间:2022-08-30 21:39:22 357
相关标签: # flask
我提前为我的英语道歉(我不是母语)。
我想了解如何从数据库中自动生成网格上的用户控件元素。因此,一个元素表示数据库中的一行。我试图坚持MVVM模式。
在下面的图片中,我给出了一个我希望它看起来如何的示例。
我真的很惭愧于展示我的尝试(我是一个新手程序员),但我想不出任何更好的方法来几乎手动生成每个元素,我的代码如下所示:
public class ListGetter
{
private readonly List _list;
private Grid _elementGridList;
private int _rowIndex;
private int _lastColumn;
public ListGetter(List list)
{
_list = list;
}
public Grid GetListGrid()
{
ResetPosition();
foreach (var item in _list)
CreateElement(item);
return _elementGridList;
}
private void CreateElement(IListable el)
{
string labelText = el.GetLabel();
string descText = el.GetDescription();
TextBlock label = GenerateLabel(labelText);
TextBlock desc = GenerateDesc(descText);
Border elementBorder = new Border
{
Style = Application.Current.FindResource("ListElBorder") as Style
};
StackPanel btnPanel = GenerateBtns(el, elementBorder);
StackPanel elementPanel = new StackPanel();
elementPanel.Children.Add(label);
elementPanel.Children.Add(desc);
elementPanel.Children.Add(btnPanel);
elementBorder.Child = elementPanel;
MakeHoverElementsVisualSelection(elementBorder);
AddElementToGrid(elementBorder);
}
private void ResetPosition()
{
_elementGridList = new Grid();
_rowIndex = -1;
_lastColumn = 1;
if (_list.Count > 0)
{
ColumnDefinition _columnDefinition1 = new ColumnDefinition();
ColumnDefinition _columnDefinition2 = new ColumnDefinition();
_elementGridList.ColumnDefinitions.Add(_columnDefinition1);
_elementGridList.ColumnDefinitions.Add(_columnDefinition2);
}
}
private void AddElementToGrid(Border border)
{
if (_lastColumn == 1)
{
_lastColumn = 0;
var row = new RowDefinition
{
Height = GridLength.Auto
};
_elementGridList.RowDefinitions.Add(row);
_rowIndex++;
}
else
_lastColumn = 1;
Grid.SetColumn(border, _lastColumn);
Grid.SetRow(border, _rowIndex);
_elementGridList.Children.Add(border);
}
public List GetList() => _list.ToArray().ToList();
}
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报