我遇到了同样的情况。我只是将 SelectedDatesChanged 事件连接到一个公共方法,并将参数设置为 SelectedDates。这是 XAML:
<Calendar Name="TournamentCalendar" SelectionMode="MultipleRange" Margin="5">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectedDatesChanged">
<cal:ActionMessage MethodName="AssignDates">
<cal:Parameter Value="{Binding SelectedDates, ElementName=TournamentCalendar}"/>
</cal:ActionMessage>
</i:EventTrigger>
</i:Interaction.Triggers>
</Calendar>
在我的视图模型中,我添加了以下方法。请注意参数的类型。
public void AssignDates(SelectedDatesCollection dates)
{
if (dates.Count > 0)
{
_tournamentDates.Clear();
foreach (var date in dates)
{
_tournamentDates.Add(new DateViewModel(date));
}
NotifyOfPropertyChange(() => TournamentDates);
}
}
我还发现,一旦调用此方法,您实际上可以从视图模型中更新选定的日期,只需从传入的 SelectedDatesCollection 对象中添加或删除日期,如下所示:
public void AssignDates(SelectedDatesCollection dates)
{
if (dates.Count > 0)
{
// Removes today if included then adds a date 4 days from today
DateTime today = DateTime.Today;
if (dates.Contains(today))
{
dates.Remove(today);
}
dates.Add(today.AddDays(4));
}
}
希望这可以帮助!