WPF 数据行控件定义及布局示例
以下代码展示了如何使用 WPF 控件定义和布局一个数据行,每个字段之间用 Border 添加一行一竖的格式。代码中只展示了每个字段的定义和添加到 Grid 中的代码。其中包括日期选择器、下拉框、文本框、按钮和图片等控件,用于实现对光源设备的控制和监测。同时,每个控件都设置了相应的属性,如 Margin、VerticalAlignment、Name 等,以及事件处理函数,如 Click、PreviewMouseLeftButtonDown 等,用于实现相应的功能。最终,这些控件被添加到一个 Grid 中,形成了一个完整的数据行。
public RowInfo()
{
Panel = new Grid
{
Margin = thickness
};
Panel.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(30) });
Panel.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(140) });
Panel.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(140) });
Panel.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(width) });
Panel.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(width) });
Panel.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(70) });
Panel.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(70) });
Panel.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(120) });
Panel.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(width) });
Panel.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(140) });
Panel.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(100) });
Panel.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(width) });
Panel.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(50) });
//序号
var serialNumber = new TextBlock
{
Margin = thickness,
VerticalAlignment = VerticalAlignment.Center
};
Panel.Children.Add(serialNumber);
Grid.SetColumn(serialNumber, 0);
//开始日期
var startDate = new DatePicker
{
Margin = thickness,
VerticalAlignment = VerticalAlignment.Center,
Name = 'startDate'
};
Panel.Children.Add(startDate);
Grid.SetColumn(startDate, 1);
//结束日期
var endDate = new DatePicker
{
Margin = thickness,
VerticalAlignment = VerticalAlignment.Center,
Name = 'endDate'
};
Panel.Children.Add(endDate);
Grid.SetColumn(endDate, 2);
//电源设备
var PowerSupplyEquipment = new ComboBox
{
Margin = thickness,
VerticalAlignment = VerticalAlignment.Center,
ItemsSource = new[] { '光源1', '光源2', '光源3', '光源4', '光源5', '光源6', '光源7', '光源8', '光源9', '光源10', '光源11', '光源12', '光源13', '光源14', '光源15', '光源16', '光源17', '光源18', '光源19', '光源20' },
Name = 'PowerSupplyEquipment'
};
Panel.Children.Add(PowerSupplyEquipment);
Grid.SetColumn(PowerSupplyEquipment, 3);
//端口号
var port = new ComboBox
{
Margin = thickness,
VerticalAlignment = VerticalAlignment.Center,
Name = 'port'
};
port.PreviewMouseLeftButtonDown += CurrentTextBox_PreviewMouseLeftButtonDown;
Panel.Children.Add(port);
Grid.SetColumn(port, 4);
//电流
var current = new TextBox
{
Margin = thickness,
VerticalAlignment = VerticalAlignment.Center,
HorizontalContentAlignment = HorizontalAlignment.Center,
Name = 'current'
};
Panel.Children.Add(current);
Grid.SetColumn(current, 5);
//电压
var voltage = new TextBox
{
Margin = thickness,
VerticalAlignment = VerticalAlignment.Center,
HorizontalContentAlignment = HorizontalAlignment.Center,
Name = 'voltage'
};
Panel.Children.Add(voltage);
Grid.SetColumn(voltage, 6);
//泵异常温度
var pumpAbnormalTemperature = new TextBox
{
Margin = thickness,
VerticalAlignment = VerticalAlignment.Center,
HorizontalContentAlignment = HorizontalAlignment.Center,
Name = 'pumpAbnormalTemperature'
};
Panel.Children.Add(pumpAbnormalTemperature);
Grid.SetColumn(pumpAbnormalTemperature, 7);
//泵温度
var pumpTemperature = new TextBox
{
Margin = thickness,
VerticalAlignment = VerticalAlignment.Center,
HorizontalContentAlignment = HorizontalAlignment.Center,
Name = 'pumpTemperature'
};
Panel.Children.Add(pumpTemperature);
Grid.SetColumn(pumpTemperature, 8);
//功率异常值
var powerAbnormalValue = new TextBox
{
Margin = thickness,
VerticalAlignment = VerticalAlignment.Center,
HorizontalContentAlignment = HorizontalAlignment.Center,
Name = 'powerAbnormalValue'
};
Panel.Children.Add(powerAbnormalValue);
Grid.SetColumn(powerAbnormalValue, 9);
//功率值
var powerValue = new TextBox
{
Margin = thickness,
VerticalAlignment = VerticalAlignment.Center,
HorizontalContentAlignment = HorizontalAlignment.Center,
Name = 'powerValue'
};
Panel.Children.Add(powerValue);
Grid.SetColumn(powerValue, 10);
//开关
var switchButton = new Button
{
Content = '开',
Margin = thickness,
VerticalAlignment = VerticalAlignment.Center,
HorizontalContentAlignment = HorizontalAlignment.Center,
Style = (Style)FindResource('butt')
};
switchButton.Click += SwitchButton_Click;
Panel.Children.Add(switchButton);
Grid.SetColumn(switchButton, 11);
//开光图片
var image = new Image
{
Source = new BitmapImage(new Uri('pack://application:,,,/img/led_gray.png')),
Width = 30,
Height = 30
};
image.Name = 'isImg';
Panel.Children.Add(image);
Grid.SetColumn(image, 12);
}
以上代码展示了一个数据行的控件定义和布局示例,您可以根据您的需求进行调整和扩展。
原文地址: https://www.cveoy.top/t/topic/j7FF 著作权归作者所有。请勿转载和采集!