页面逻辑添加

This commit is contained in:
2026-04-22 10:24:28 +08:00
parent 10bf40662f
commit 5466ab3522
3 changed files with 114 additions and 26 deletions

View File

@@ -128,6 +128,7 @@ namespace 头罩视野.Views
testTimer.Start();
ma.BtnClickFunction(Function.ButtonType., 101);
MessageBox.Show("开始测试");
}
private async void Timer_Tick(object sender, EventArgs e)

View File

@@ -172,7 +172,7 @@
<Grid Grid.Row="3">
<TextBlock Text="右眼" FontSize="16" Margin="0,10,0,5"/>
<Button Content="保存" FontSize="18"
Width="120" Height="50" Background="#3498DB" Foreground="White" HorizontalAlignment="Left" Margin="850,0,0,5" />
Width="120" Height="50" Background="#3498DB" Foreground="White" HorizontalAlignment="Left" Margin="850,0,0,5" Click="btnSaveLeft_Click" />
</Grid>
<!--表格2-->
<Grid Grid.Row="4" Margin="0 0 0 10">
@@ -207,9 +207,9 @@ ScrollViewer.HorizontalScrollBarVisibility="Auto"
<Grid Grid.Row="5" >
<!-- 停止 -->
<Button Content="保存" FontSize="18"
Width="120" Height="50" Background="#3498DB" Foreground="White" HorizontalAlignment="Left" Margin="850,0,0,0" />
Width="120" Height="50" Background="#3498DB" Foreground="White" HorizontalAlignment="Left" Margin="850,0,0,0" Click="btnSaveRight_Click"/>
<Button Content="清除" FontSize="18"
Width="120" Height="50" Background="White" BorderBrush="red" Foreground="red" HorizontalAlignment="Left" Margin="14,0,0,0" />
Width="120" Height="50" Background="White" BorderBrush="red" Foreground="red" HorizontalAlignment="Left" Margin="14,0,0,0" PreviewMouseLeftButtonDown ="btnClear_MouseDown" PreviewMouseLeftButtonUp ="btnClear_MouseUp" />
<TextBlock HorizontalAlignment="Left" Foreground="red"
FontSize="18"
Width="142" Margin="148,25,0,23" RenderTransformOrigin="0.5,0.5">

View File

@@ -1,6 +1,8 @@
using Sunny.UI;
using Microsoft.Win32;
using Sunny.UI;
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Windows;
using System.Windows.Controls;
@@ -11,7 +13,6 @@ using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace .Views
{
/// <summary>
@@ -22,31 +23,48 @@ namespace 头罩视野.Views
public partial class RecordDate : Page
{
// 数据存储列表
private List<dynamic> LeftEyeDataList = new List<dynamic>();
private List<dynamic> RightEyeDataList = new List<dynamic>();
// 长按清除用
private bool _isClearPressed = false;
private Thread _clearThread;
public RecordDate()
{
InitializeComponent();
// 1. 固定列:编号、时间、日期
//dataGrid1.Columns.Add(new DataGridTextColumn { Header = "编号", Binding = new System.Windows.Data.Binding("Num") });
//dataGrid1.Columns.Add(new DataGridTextColumn { Header = "时间", Binding = new System.Windows.Data.Binding("Time") });
//dataGrid1.Columns.Add(new DataGridTextColumn { Header = "日期", Binding = new System.Windows.Data.Binding("Date") });
DynamicHeader();
AddTestRow();
}
// 测试数据
void AddTestRow()
{
var row = new Dictionary<string, object>
// 2. 调用(名字和上面的变量一致)
AddDataRow(dataGrid1, LeftEyeDataList, 64);
AddDataRow(dataGrid2, RightEyeDataList, 64);
// 测试数据
/// <summary>
/// 给表格添加一行数据(自动存起来,用于保存)
/// </summary>
/// <param name="dg">目标表格</param>
/// <param name="dataList">数据存储列表</param>
/// <param name="channelCount">通道数量 64/32</param>
void AddDataRow(DataGrid dg, List<dynamic> dataList, int channelCount)
{
// 创建一行数据
dynamic row = new System.Dynamic.ExpandoObject();
var dict = (IDictionary<string, object>)row;
// 固定列
dict["Id"] = dataList.Count + 1;
dict["Time"] = DateTime.Now.ToString("HH:mm:ss");
dict["Date"] = DateTime.Now.ToString("yyyy-MM-dd");
// 通道列Ch1 ~ Ch64
for (int i = 1; i <= channelCount; i++)
{
{ "Num", 1 },
{ "Time", DateTime.Now.ToString("HH:mm:ss") },
{ "Date", DateTime.Now.ToString("yyyy-MM-dd") }
};
dict[$"Ch{i}"] = 0; // 这里你可以替换成真实数据
}
for (int i = 1; i <= 64; i++)
row[$"Ch{i}"] = new Random().Next(10, 100);
dataGrid1.Items.Add(row);
dataGrid2.Items.Add(row);
// 存起来 + 显示
dataList.Add(row);
dg.Items.Add(row);
}
}
//动态生成表头
void DynamicHeader()
@@ -67,14 +85,83 @@ namespace 头罩视野.Views
}
}
//#endregion
private void btnBack_Click(object sender, RoutedEventArgs e)
// 保存左眼
private void btnSaveLeft_Click(object sender, RoutedEventArgs e)
{
NavigationService.Content = null;
SaveToCsv(LeftEyeDataList, $"左眼数据_{DateTime.Now:yyyyMMddHHmmss}.csv");
}
// 保存右眼
private void btnSaveRight_Click(object sender, RoutedEventArgs e)
{
SaveToCsv(RightEyeDataList, $"右眼数据_{DateTime.Now:yyyyMMddHHmmss}.csv");
}
private void SaveToCsv(List<dynamic> dataList, string defaultFileName)
{
if (dataList == null || dataList.Count == 0)
{
MessageBox.Show("无数据可保存");
return;
}
// 打开文件夹选择框
var folderDialog = new OpenFolderDialog();
if (folderDialog.ShowDialog() != true)
return;
string folder = folderDialog.FolderName;
string path = System.IO.Path.Combine(folder, defaultFileName);
// 写入 CSV
using (var sw = new StreamWriter(path, false, Encoding.UTF8))
{
var first = (IDictionary<string, object>)dataList[0];
sw.WriteLine(string.Join(",", first.Keys));
foreach (var item in dataList)
{
var dict = (IDictionary<string, object>)item;
sw.WriteLine(string.Join(",", dict.Values));
}
}
MessageBox.Show("保存成功:\n" + path);
}
private void btnClear_MouseDown(object sender, MouseButtonEventArgs e)
{
_isClearPressed = true;
_clearThread = new Thread(() =>
{
Thread.Sleep(500); // 长按1秒触发
if (_isClearPressed)
{
Application.Current.Dispatcher.Invoke(() => ClearAllData());
}
});
_clearThread.Start();
}
// 清除所有数据
private void ClearAllData()
{
LeftEyeDataList.Clear();
dataGrid1.Items.Clear();
RightEyeDataList.Clear();
dataGrid2.Items.Clear();
MessageBox.Show("数据已清除");
}
private void btnClear_MouseUp(object sender, MouseButtonEventArgs e)
{
_isClearPressed = false;
_clearThread?.Join(100); // 等待线程结束最多100毫秒然后强制结束
}