私が初めてMVVMライトを使用して、そう私と一緒に負担しています...私は私のメインページにLongListSelectorを持っている、と私はからのデータとそれをロードするためにRelayCommandを使用していますMVVM
のロードページがロードされたときの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ため、このコンストラクタを追加しました:私はまだ_internalGroupingのassigmentにInvalidCastExceptionが取得
private readonly IGrouping<TKey, TElement> _internalGrouping;
public PublicGrouping(IOrderedQueryable<IGrouping<DateTime, Workout>> workoutsByDate)
{
_internalGrouping = (IGrouping<TKey, TElement>) workoutsByDate;
}
をコンストラクタで
Upvoted例外を隠す 'と' 演算子のために。 – JeffCren