gpt4 book ai didi

wpf - ViewModel 沟通问题

转载 作者:行者123 更新时间:2023-12-03 10:18:53 25 4
gpt4 key购买 nike

想象一下,我有一个 UserControl,它显示一个 parking 场(我最喜欢的类比),里面有不同颜色的汽车。您可以选择一辆车,并在单独的 UserControl(在单独的项目中)显示所选汽车的统计信息。

现在用户想要在汽车统计信息 UC 上的一个按钮,“下一辆相同颜色的汽车”。选中后,它应该以相同的颜色显示 parking 场上下一辆车的统计信息(从上到下,从左到右)。

因此,如果这是有道理的,那么问题就来了。

我目前正在使用 MVVM Lite 将包含所选汽车的消息从 parking 场 UC 发送到汽车统计信息 UC。一切都很好。但是现在,有了这个新功能请求,我该怎么办?统计 UC 需要从 parking 场 UC 请求下一辆车。

这会是使用依赖注入(inject)的好地方吗?还是有其他更好的方法?

最佳答案

如果我说对了,那么您想要的是具有适当 CommandParameters 的命令。

  public class Car
{
public Car(ParkingLot lot)
{
_parkingLot = lot;
}

public string Color { get; set; }

public ParkingLot ParkingLot
{
get
{
return _parkingLot;
}
}

private ParkingLot _parkingLot;
}

public class ParkingLot : ObservableCollection<Car>
{
public Car SelectedCar { get; set; }

public ICommand ShowNextCarCommand {
get
{
if (_showNextCar == null)
{
_showNextCar = new DelegateCommand(OnShowNextCar);
}

return _showNextCar;
}
}

private void OnShowNextCar()
{
string currentColor = SelectedCar.Color;
//Write proper logic to get the next Car. Here you got the currently selected car with you and the color
SelectedCar = this.NEXT(s => s.Color == currentColor); //Write the NEXT() logic
}

ICommand _showNextCar;
}

现在只需设置 Button.Command="{Binding ParkingLot.ShowNextCarCommand}"即可控制 ParkingLot View 模型类并找到 Next 相同颜色的汽车并将其再次设置为 SelectedCar 属性。我假设您将在所有这些属性中都有 RaisepropertyChanged。我使用简单的 Prism 的 DelegateCommand

关于wpf - ViewModel 沟通问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2241324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com