我使用MVVM光的第一次,所以我承擔......加載在MVVM
我有我的主頁面LongListSelector,和我使用的是RelayCommand從數據加載它加載頁面時的SQLCE數據庫。
在我MainViewModel,我有一個屬性鍛鍊:
public const string WorkoutsPropertyName = "Workouts";
private PublicGrouping<DateTime, Workout> _workouts;
public PublicGrouping,DateDime, Workout> Workouts
{
get { return workouts; }
set
{
if (_workouts == value) { return; }
_workouts = value;
RaisePropertyChanged(WorkoutsPropertyName);
}
}
然後,在構造函數中,我創建了LoadedCommand:
public MainViewModel()
{
LoadedCommand = new RelayCommand(() =>
{
context = new XLogDataContext();
using (context)
{
if (context.Workouts.Count() > 0)
{
var workoutsByDate = from workout in context.Workouts
group workout by workout.WorkoutDate
into c
orderby c.Key
select c;
Workouts = workoutsByDate as PublicGrouping<DateTime, Workout>;
}
}
});
}
當RelayCommand運行,鍛鍊總是返回null。我知道有數據被返回,所以我認爲問題在於將LINQ查詢轉換爲PublicGrouping。我也嘗試創建屬性爲
ObservableCollection<PublicGrouping<DateTime, Workout>>
但這也行不通。
UPDATE:
我改變了RelayCommand使用此行:
Workouts = new PublicGrouping<DateTime, Workout>(workoutsByDate);
,並將此構造函數PublicGrouping:
private readonly IGrouping<TKey, TElement> _internalGrouping;
public PublicGrouping(IOrderedQueryable<IGrouping<DateTime, Workout>> workoutsByDate)
{
_internalGrouping = (IGrouping<TKey, TElement>) workoutsByDate;
}
我還是坐上_internalGrouping分配新建分配FY InvalidCastException的在構造函數中。
Upvoted爲 '爲' 經營者隱藏例外。 – JeffCren