我遇到了同樣的情況。我只是將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));
}
}
希望這有助於!
如果您添加C#或VB.NET標記(以適合您的項目爲準),您可能會獲得更多視圖。 – JDB