我的视图模型有一个不寻常的问题。我有一个项目列表,我需要一个带有附加命令的按钮到每个项目。我使用ItemsSource,每个项目都用这个视图模型表示:
public class CarItemViewModel : ViewModelBase, ICarItemViewModel
{
public void Init(Car definition, Action<Car> onSelection)
{
Wehicle = definition;
SelectCarCommand = new RelayCommand(() => onSelection(definition));
}
public Car Wehicle { get; private set; }
public ICommand SelectCarCommand { get; private set; }
}
然后在我的ViewModel for page I中调用下面的方法来填充OnNavigatedTo或Loaded事件中的列表:
public void ShowCars()
{
var newCar = new Car()
{
Make = "Mazda",
Model = "MX-5"
};
var carVM = new CarItemViewModel();
carVM.Init(newCar, SelectCar);
Cars.Add(carVM);
}
数据绑定工作正常。我可以看到名称等,但带有绑定命令的按钮有时是无效的,它不会在SelectCar方法中遇到断点。当我做一个小技巧并在调用ShowCars()之前,我添加Task.Delay(200)就可以了。
我正在为Windows Phone 8 Silverlight开发并使用最新的MVVM Light。有人有类似的问题吗?