gpt4 book ai didi

wpf - 在WPF中动态添加网格和控件

转载 作者:行者123 更新时间:2023-12-03 14:07:11 25 4
gpt4 key购买 nike

我现在正在做一个显示系统中HDD使用情况的应用程序。为此,我想动态生成网格和控件(例如进度条和标签)以显示用法。是否有任何XAML模板可用于此目的?

最佳答案

我使用以下代码在我的代码中动态生成控件

Label[] drivesLabel;
Label[] percentageLabel;
ProgressBar[] drivesProgress;
int drivesCount = 0;

private void DrawControls()
{
try
{
// Getting drive list.
List<DriveInfo> driveList = GetHardDiskDrives();
drivesCount = driveList.Count;

// Initializing new Grid.
Grid drivesGrid = new Grid();
drivesGrid.Children.Clear();
DrivesBorder.Child = drivesGrid;

// Adding Rows and Colums to Grid.
RowDefinition[] rows = new RowDefinition[2*drivesCount + 1];
ColumnDefinition[] columns = new ColumnDefinition[6];

// Draw Rows.
for (int i = 0; i < 2*drivesCount + 1; i++)
{
rows[i] = new RowDefinition();
drivesGrid.RowDefinitions.Add(rows[i]);

// Setting Row height.
rows[i].Height = (0 == i % 2) ? new GridLength( 5 ): new GridLength( 25 );
}
// Draw Columns.
for (int i = 0; i < 6; i++)
{
columns[i] = new ColumnDefinition();
drivesGrid.ColumnDefinitions.Add(columns[i]);
if (i % 2 == 0)
{
// Setting column width.
columns[i].Width = new GridLength(5);
}
}

// Setting column width.
columns[1].Width = new GridLength(60);
columns[3].Width = new GridLength(180);
columns[5].Width = new GridLength(60);

// Draw Labels to show drive letters.
drivesLabel = new Label[drivesCount];

// Draw Progress bar to show drive usage.
drivesProgress = new ProgressBar[drivesCount];

// Draw Labels to show drive usage.
percentageLabel = new Label[drivesCount];

// Adding Labels and Progressbars to Grid.
for (int i = 0, j = 1; i < drivesCount; i++, j++)
{
// Initialize Labels to show drives.
drivesLabel[i] = new Label();
drivesLabel[i].Content = driveList[i].Name;
drivesLabel[i].Foreground = Brushes.Navy;
Grid.SetRow(drivesLabel[i], i + j);
Grid.SetColumn(drivesLabel[i], 1);
drivesGrid.Children.Add(drivesLabel[i]);

// Initialize ProgressBar to show usage.
drivesProgress[i] = new ProgressBar();
drivesProgress[i].FlowDirection = FlowDirection.LeftToRight;
drivesProgress[i].HorizontalAlignment = HorizontalAlignment.Center;
drivesProgress[i].VerticalAlignment = VerticalAlignment.Center;
drivesProgress[i].Orientation= Orientation.Horizontal;
drivesProgress[i].Value = 0;
drivesProgress[i].Maximum = 100;
drivesProgress[i].Width = 180;
drivesProgress[i].Height = 18;
Grid.SetRow(drivesProgress[i], i + j);
Grid.SetColumn(drivesProgress[i], 3);
drivesGrid.Children.Add(drivesProgress[i]);

// Initialize Labels to show usage in percentage.
percentageLabel[i] = new Label();
percentageLabel[i].Content = "0 %";
Grid.SetRow(percentageLabel[i], i + j);
Grid.SetColumn(percentageLabel[i], 5);
drivesGrid.Children.Add(percentageLabel[i]);

// Setting window height.
SetWindowHeight(30);
}
}
catch(Exception Ex) {}
}


函数GetHardDiskDrives()和SetWindowHeight()是用户定义的函数。 jpb用于获取硬盘驱动器,并根据添加的新控件设置窗口高度。

关于wpf - 在WPF中动态添加网格和控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1253744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com