c# - 如何在 Windows UWP 应用程序中制作径向仪表
问题描述
我在通用 Windows 平台 (UWP) 上制作 OBD 扫描仪 它现在有油位和空气温度的假读数现在它只是读取文本,但我想让它读取径向仪表
有人可以告诉我怎么做吗?这是我的个人项目,所以我很感激帮助
我试图添加的径向仪表:https ://docs.microsoft.com/en-us/windows/communitytoolkit/controls/radialgauge
我的 Xaml 页面,以便您可以对其进行更改或至少看看我在说什么:
<Page
x:Class="StandaloneEngineReadoutSystem.UwpApp.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:StandaloneEngineReadoutSystem.UwpApp"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Loaded="Page_Loaded">
<StackPanel Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<TextBlock>Airtemperature</TextBlock>
<TextBlock Text="{Binding AirTemp}"></TextBlock>
<TextBlock>FuelLevel</TextBlock>
<TextBlock Text="{Binding FuelLevel}"></TextBlock>
</StackPanel>
提前谢谢大家!如果您需要更多信息,请告诉我!
解决方案
如何在 Windows UWP 应用程序中制作径向仪表
要使用RadialGauge
,您需要先安装Microsoft.Toolkit.Uwp.UI.Controls
nuget 包。然后RadialGauge
在 xaml 页面中创建一个实例。
<Grid>
<controls:RadialGauge
IsInteractive="True"
Maximum="100"
Minimum="0"
NeedleBrush="DarkOrchid"
NeedleWidth="2"
ScaleTickBrush="Red"
ScaleWidth="10"
TickBrush="DarkOliveGreen"
TickLength="10"
TickSpacing="1"
Unit="temp"
Value="{x:Bind AirTemp, Mode=TwoWay}"
/>
</Grid>
在后面的代码中创建绑定属性。
public sealed partial class MainPage : Page, INotifyPropertyChanged
{
public MainPage()
{
this.InitializeComponent();
SetFakeData();
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
if (PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
private int _airTemp;
public int AirTemp
{
get
{
return _airTemp;
}
set
{
_airTemp = value;
OnPropertyChanged();
}
}
private void SetFakeData()
{
var timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromSeconds(0.5);
timer.Tick += Timer_Tick;
timer.Start();
}
private void Timer_Tick(object sender, object e)
{
do
{
AirTemp += 1;
} while (AirTemp > 100);
}
}
Value
最后,与AirTemp
属性绑定。我用 aDispatcherTimer
来制作假数据。
Value="{x:Bind AirTemp, Mode=TwoWay}"
推荐阅读
- python - 从没有索引的熊猫数据框中获取列值
- security - 允许使用用户名或电子邮件地址登录的 Tomcat 安全容器
- android - apollo server 2 (graphql) 的图像上传功能
- java - 即使设置了 NON_EMPTY,杰克逊也会打印对象
- powershell - 如何通过只知道行的一部分(CONTAINING *)来替换文本文件中的整行?
- python - 使用 pyarrow 时无法加载 libhdfs
- r - 是否有任何处理蓝牙连接的 R 包?
- powershell - robocopy /xd 忽略目录列表
- java - Spring 框架存储库查询返回 null
- javascript - 使用带有 HTML 地理位置的 Google 地图