A:增加Top网速固定展示
This commit is contained in:
1 parent
e3f8ad7749
commit
5b7abd1ef3
2 files changed
+68
-53
No files matched your search
@@ -132,8 +132,9 @@
|
|||||||
FontSize="9" FontWeight="Normal"
|
FontSize="9" FontWeight="Normal"
|
||||||
Foreground="#666666"
|
Foreground="#666666"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
MinWidth="35"
|
Width="40"
|
||||||
TextAlignment="Right" />
|
TextAlignment="Right"
|
||||||
|
FontFamily="Consolas" />
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<!-- Download Speed -->
|
<!-- Download Speed -->
|
||||||
@@ -150,8 +151,9 @@
|
|||||||
FontSize="9" FontWeight="Normal"
|
FontSize="9" FontWeight="Normal"
|
||||||
Foreground="#666666"
|
Foreground="#666666"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
MinWidth="35"
|
Width="40"
|
||||||
TextAlignment="Right" />
|
TextAlignment="Right"
|
||||||
|
FontFamily="Consolas" />
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
|||||||
@@ -493,38 +493,30 @@ public class NetworkMonitorViewModel : INotifyPropertyChanged
|
|||||||
// 更新NetworkTopListManager的统计数据
|
// 更新NetworkTopListManager的统计数据
|
||||||
NetworkTopListManager.Instance.UpdateAllProcessStats();
|
NetworkTopListManager.Instance.UpdateAllProcessStats();
|
||||||
|
|
||||||
// 获取Top榜数据
|
// 获取Top榜数据(现在总是返回固定数量的项目)
|
||||||
var topList = NetworkTopListManager.Instance.GetTopList(settings.NetworkTopListCount);
|
var topList = NetworkTopListManager.Instance.GetTopList(settings.NetworkTopListCount);
|
||||||
|
|
||||||
if (topList.HasData)
|
// 总是显示Top榜,因为现在保证有固定数量的项目
|
||||||
|
var newViewModels = topList.TopProcesses.Select(stats =>
|
||||||
{
|
{
|
||||||
// 更新现有项目或添加新项目
|
var existing = TopProcesses.FirstOrDefault(vm => vm.ProcessId == stats.ProcessId);
|
||||||
var newViewModels = topList.TopProcesses.Select(stats =>
|
if (existing != null)
|
||||||
{
|
{
|
||||||
var existing = TopProcesses.FirstOrDefault(vm => vm.ProcessId == stats.ProcessId);
|
existing.UpdateStats(stats);
|
||||||
if (existing != null)
|
return existing;
|
||||||
{
|
|
||||||
existing.UpdateStats(stats);
|
|
||||||
return existing;
|
|
||||||
}
|
|
||||||
|
|
||||||
return new ProcessNetworkStatsViewModel(stats);
|
|
||||||
}).ToList();
|
|
||||||
|
|
||||||
// 更新集合
|
|
||||||
TopProcesses.Clear();
|
|
||||||
foreach (var vm in newViewModels)
|
|
||||||
{
|
|
||||||
TopProcesses.Add(vm);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TopListVisibility = System.Windows.Visibility.Visible;
|
return new ProcessNetworkStatsViewModel(stats);
|
||||||
}
|
}).ToList();
|
||||||
else
|
|
||||||
|
// 更新集合
|
||||||
|
TopProcesses.Clear();
|
||||||
|
foreach (var vm in newViewModels)
|
||||||
{
|
{
|
||||||
TopProcesses.Clear();
|
TopProcesses.Add(vm);
|
||||||
TopListVisibility = System.Windows.Visibility.Collapsed;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TopListVisibility = System.Windows.Visibility.Visible;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -537,36 +529,57 @@ public class NetworkMonitorViewModel : INotifyPropertyChanged
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private void UpdateDesignTimeTopList()
|
private void UpdateDesignTimeTopList()
|
||||||
{
|
{
|
||||||
if (TopProcesses.Count == 0)
|
var settings = NetViewSettings.Instance;
|
||||||
|
var targetCount = settings.NetworkTopListCount;
|
||||||
|
|
||||||
|
// 确保始终显示固定数量的项目
|
||||||
|
if (TopProcesses.Count != targetCount)
|
||||||
{
|
{
|
||||||
// 添加一些假数据用于设计时预览
|
// 创建固定数量的假数据
|
||||||
var fakeStats = new[]
|
var fakeStats = new List<ProcessNetworkStats>();
|
||||||
|
|
||||||
|
// 添加有网络活动的进程
|
||||||
|
fakeStats.Add(new ProcessNetworkStats
|
||||||
{
|
{
|
||||||
new ProcessNetworkStats
|
ProcessId = 1234,
|
||||||
|
ProcessName = "chrome",
|
||||||
|
CurrentUploadSpeed = 1024 * 500, // 500 KB/s
|
||||||
|
CurrentDownloadSpeed = 1024 * 1024 * 15.5, // 15.5 MB/s
|
||||||
|
});
|
||||||
|
|
||||||
|
fakeStats.Add(new ProcessNetworkStats
|
||||||
|
{
|
||||||
|
ProcessId = 5678,
|
||||||
|
ProcessName = "firefox",
|
||||||
|
CurrentUploadSpeed = 1024 * 200, // 200 KB/s
|
||||||
|
CurrentDownloadSpeed = 1024 * 1024 * 8.2, // 8.2 MB/s
|
||||||
|
});
|
||||||
|
|
||||||
|
fakeStats.Add(new ProcessNetworkStats
|
||||||
|
{
|
||||||
|
ProcessId = 9012,
|
||||||
|
ProcessName = "steam",
|
||||||
|
CurrentUploadSpeed = 1024 * 50, // 50 KB/s
|
||||||
|
CurrentDownloadSpeed = 1024 * 1024 * 5.1, // 5.1 MB/s
|
||||||
|
});
|
||||||
|
|
||||||
|
// 如果需要更多项目,添加无网络活动的进程
|
||||||
|
while (fakeStats.Count < targetCount)
|
||||||
|
{
|
||||||
|
fakeStats.Add(new ProcessNetworkStats
|
||||||
{
|
{
|
||||||
ProcessId = 1234,
|
ProcessId = 1000 + fakeStats.Count,
|
||||||
ProcessName = "chrome",
|
ProcessName = $"app{fakeStats.Count + 1}",
|
||||||
CurrentUploadSpeed = 1024 * 500, // 500 KB/s
|
CurrentUploadSpeed = 0,
|
||||||
CurrentDownloadSpeed = 1024 * 1024 * 15.5, // 15.5 MB/s
|
CurrentDownloadSpeed = 0,
|
||||||
},
|
});
|
||||||
new ProcessNetworkStats
|
}
|
||||||
{
|
|
||||||
ProcessId = 5678,
|
// 取前N个项目
|
||||||
ProcessName = "firefox",
|
var selectedStats = fakeStats.Take(targetCount).ToList();
|
||||||
CurrentUploadSpeed = 1024 * 200, // 200 KB/s
|
|
||||||
CurrentDownloadSpeed = 1024 * 1024 * 8.2, // 8.2 MB/s
|
|
||||||
},
|
|
||||||
new ProcessNetworkStats
|
|
||||||
{
|
|
||||||
ProcessId = 9012,
|
|
||||||
ProcessName = "steam",
|
|
||||||
CurrentUploadSpeed = 1024 * 50, // 50 KB/s
|
|
||||||
CurrentDownloadSpeed = 1024 * 1024 * 5.1, // 5.1 MB/s
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
TopProcesses.Clear();
|
TopProcesses.Clear();
|
||||||
foreach (var stats in fakeStats)
|
foreach (var stats in selectedStats)
|
||||||
{
|
{
|
||||||
TopProcesses.Add(new ProcessNetworkStatsViewModel(stats));
|
TopProcesses.Add(new ProcessNetworkStatsViewModel(stats));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user