Xaml Syncfusion Calendar OnMonthCellLoaded自定义事件正在向我的命令传递null
前言:Syncfusion为Xamarin.Forms提供了一个名为SfCalendar的免费日历控件。此日历有一个名为OnMonthCellLoaded的事件。此事件的问题是,其eventargs的类型为MonthCell,但不幸的是,它不是从System.eventargs继承的。这是一个问题,因为事件的eventargs必须继承自System.EvenArgs,以便Prism EventToCommand行为正确使用它 目标:我试图使用prism行为绑定OnMonthCellLoaded事件,以便设置MonthCell的数据上下文。我希望这是清楚的 当前情况: 我对SfCalendar日历进行了如下扩展:Xaml Syncfusion Calendar OnMonthCellLoaded自定义事件正在向我的命令传递null,xaml,xamarin.forms,prism,syncfusion,sfcalendar,Xaml,Xamarin.forms,Prism,Syncfusion,Sfcalendar,前言:Syncfusion为Xamarin.Forms提供了一个名为SfCalendar的免费日历控件。此日历有一个名为OnMonthCellLoaded的事件。此事件的问题是,其eventargs的类型为MonthCell,但不幸的是,它不是从System.eventargs继承的。这是一个问题,因为事件的eventargs必须继承自System.EvenArgs,以便Prism EventToCommand行为正确使用它 目标:我试图使用prism行为绑定OnMonthCellLoaded事
public class sfCalendarExtended : Syncfusion.SfCalendar.XForms.SfCalendar
{
public event EventHandler<MonthCellEventArgs> OnMonthCellLoadedExtended;
public sfCalendarExtended()
{
this.OnMonthCellLoaded += SfCalendarExtended_OnMonthCellLoaded;
}
private void SfCalendarExtended_OnMonthCellLoaded(object sender, MonthCell e)
{
if (this.OnMonthCellLoadedExtended != null)
{
if (e != null)
{
Debug.Print(e.Date.ToLongDateString());
var eventArgs = new MonthCellEventArgs() { Value = new MonthCell(e.Date) };
this.OnMonthCellLoadedExtended(this, eventArgs);
}
}
}
}
public class MonthCellEventArgs : System.EventArgs
{
public MonthCell Value { get; set; }
public MonthCellEventArgs()
{
}
}
这是我的Xaml
<Controls:sfCalendarExtended x:Name="calendar">
<Syncfusion:SfCalendar.MonthViewSettings>
<Syncfusion:MonthViewSettings DateSelectionColor="#dddddd" CellTemplate="{StaticResource weathertemplate}"/>
</Syncfusion:SfCalendar.MonthViewSettings>
<Syncfusion:SfCalendar.Behaviors>
<prismbehaviors:EventToCommandBehavior EventName="OnMonthCellLoadedExtended" Command="{Binding BindMonthCellToDateCommand}"/>
</Syncfusion:SfCalendar.Behaviors>
</Controls:sfCalendarExtended>
其中controls是SFCalendarExtended类所在命名空间的别名
现在让我们看一下我的视图模型中的命令实现:
public DelegateCommand<MonthCellEventArgs> BindMonthCellToDateCommand { get; set; }
public ViewModel()
{
BindMonthCellToDateCommand = new DelegateCommand<MonthCellEventArgs>(
(MonthCellEventArgs obj) =>
{
// more code here
现在一切都按照计划进行,直到我用调试器点击MonthCellEventArgs obj,obj总是空的
任何帮助都将不胜感激 好的,我已经向Syncfusion发送了电子邮件,他们通过将MonthCellLoaded事件处理程序的args参数更改为继承自System.EventArgs解决了这个问题。更多信息请访问他们的在线论坛
当且仅当我使用Corcav行为see link而不是Prism行为时,我的上述解决方案才有效。好的,因此我已向Syncfusion发送了有关此问题的电子邮件,他们已通过将MonthCellLoaded事件处理程序的args参数更改为从System.EventArgs继承来解决此问题。更多信息请访问他们的在线论坛
当且仅当我使用Corcav行为see link而非Prism行为时,我的上述解决方案才有效。我们已修复了“在SfCalendar中使用EventToCommand行为时引发System.ArgumentException”的问题。根据实现,Monthcell从视图移动到EventArgs,在OnMonthCellLoaded事件中不推荐使用MonthCellLoadedEventArgs。请在下面找到此修复程序的自定义程序集 自定义程序集: 请在替换自定义程序集之前清除NuGet缓存。请找到下面的链接, 组件版本:16.3.0.21 安装说明: 替换以下文件夹下的文件“Syncfusion.SfCalendar.XForms.dll、Syncfusion.SfCalendar.XForms.Android.dll、Syncfusion.SfCalendar.XForms.iOS.dll”。更换新程序集之前,请备份旧程序集。 {Syncfusion安装位置}\Essential Studio\16.3.0.21\Xamarin\lib\pcl\Syncfusion.SfCalendar.XForms.dll {Syncfusion安装位置}\Essential Studio\16.3.0.21\Xamarin\lib\Android\Syncfusion.SfCalendar.XForms.dll {Syncfusion安装位置}\EssentialStudio\16.3.0.21\Xamarin\lib\Android\Syncfusion.SfCalendar.XForms.Android.dll {Syncfusion安装位置}\Essential Studio\16.3.0.21\Xamarin\lib\iOS\Syncfusion.SfCalendar.XForms.dll {Syncfusion安装位置}\EssentialStudio\16.3.0.21\Xamarin\lib\iOS\Syncfusion.SfCalendar.XForms.iOS.dll 问候,
Vigneshkumar R我们已修复了“在SfCalendar中使用EventToCommand行为时引发System.ArgumentException”的问题。根据实现,Monthcell从视图移动到EventArgs,在OnMonthCellLoaded事件中不推荐使用MonthCellLoadedEventArgs。请在下面找到此修复程序的自定义程序集 自定义程序集: 请在替换自定义程序集之前清除NuGet缓存。请找到下面的链接, 组件版本:16.3.0.21 安装说明: 替换以下文件夹下的文件“Syncfusion.SfCalendar.XForms.dll、Syncfusion.SfCalendar.XForms.Android.dll、Syncfusion.SfCalendar.XForms.iOS.dll”。更换新程序集之前,请备份旧程序集。 {Syncfusion安装位置}\Essential Studio\16.3.0.21\Xamarin\lib\pcl\Syncfusion.SfCalendar.XForms.dll {Syncfusion安装位置}\Essential Studio\16.3.0.21\Xamarin\lib\Android\Syncfusion.SfCalendar.XForms.dll {Syncfusion安装位置}\EssentialStudio\16.3.0.21\Xamarin\lib\Android\Syncfusion.SfCalendar.XForms.Android.dll {Syncfusion安装位置}\Essential Studio\16.3.0.21\Xamarin\lib\iOS\Syncfusion.SfCalendar.XForms.dll {Syncfusion安装位置}\EssentialStudio\16.3.0.21\Xamarin\lib\iOS\Syncfusion.SfCalendar.XForms.iOS.dll 问候, 维涅什库马尔