我有这个问题与绑定,我不知道我做错了什么。我有一个包含索引属性的ViewModel,在同一个ViewModel中,还有另一个ViewModel的List<>。在我的XAML中,我试图从列表中由索引值指示的一个ViewModel中获取属性,但是除了使用文字数字之外,我在XAML中尝试的所有方法都不起作用。它确实在codebeath上进行了绑定,但它只更新了一次,再也没有更新过,而且它使用的是默认模式。
ViewModel通过UDP不断地(在某些情况下每隔1/60秒)单向传输。
CarDataViewModel.cs
public partial class CarDataViewModel : ObservableObject
{
[ObservableProperty]
private uint _currentLapTimeInMS;
...
}
字符串
MainViewModel.cs
public partial class MainViewModel : ObservableObject
{
[ObservableProperty]
private byte _playerIndex;
[ObservableProperty]
private List<CarDataViewModel> _carDataViewModels;
public MainViewModel()
{
CarDataViewModels = new();
for (int i = 0; i < 22; i++)
{
CarDataViewModel carDataViewModel = new();
CarDataViewModels.Add(carDataViewModel);
}
}
}
型
MauiProgram.cs
public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.UseMauiCommunityToolkit()
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
});
builder.Services.AddSingleton<MainViewModel>();
return builder.Build();
}
}
型
AppShell.xaml.cs
public partial class AppShell : Shell
{
public AppShell()
{
InitializeComponent();
BindingContext = ServiceHelper.GetService<MainViewModel>();
...
}
...
}
型
当我直接使用显式列表索引访问时,它可以工作…
...
<!-- This updates fine -->
<Label Text={Binding CarDataViewModels[0].CurrentLapTimeInMS} />
...
型
...但是这个数组会根据运行的汽车数量而增长,所以UDP流也为我提供了我应该保持和关注的数组索引,我也将其作为MainViewModel中的属性。
1条答案
按热度按时间ldfqzlk81#
您需要创建另一个属性
字符串
然后在每次更新
_playerIndex
时更新它型