私は同じ状況に遭遇しました。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));
}
}
お役に立てれば!