xof*_*ofz 2 c# xaml mvvm caliburn.micro
我正在使用 Caliburn.Micro。SelectionMode我的日历控件的是MultipleRange。
我看到一个SelectedDate可以为其创建绑定的属性,我可以在 ViewModel 中访问该属性。我也看到了SelectedDates,但是当我尝试为此创建绑定时,例如:
<Calendar x:Name="Dates"
SelectedDates="{Binding SelectedDates}"
SelectionMode="MultipleRange"
HorizontalAlignment="Left" />
Run Code Online (Sandbox Code Playgroud)
它告诉我“SelectedDates属性是只读的,不能从标记中设置。”
有解决办法吗?如何从我的 ViewModel 访问日历控件中的选定日期(希望使用 Caliburn.Micro 的约定)?
小智 5
我遇到了同样的情况。我只是将 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>
Run Code Online (Sandbox Code Playgroud)
在我的视图模型中,我添加了以下方法。请注意参数的类型。
public void AssignDates(SelectedDatesCollection dates)
{
if (dates.Count > 0)
{
_tournamentDates.Clear();
foreach (var date in dates)
{
_tournamentDates.Add(new DateViewModel(date));
}
NotifyOfPropertyChange(() => TournamentDates);
}
}
Run Code Online (Sandbox Code Playgroud)
我还发现,一旦调用此方法,您实际上可以通过从传入的 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));
}
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
2783 次 |
| 最近记录: |