Xaml Syncfusion Calendar OnMonthCellLoaded自定义事件正在向我的命令传递null

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事

前言:Syncfusion为Xamarin.Forms提供了一个名为SfCalendar的免费日历控件。此日历有一个名为OnMonthCellLoaded的事件。此事件的问题是,其eventargs的类型为MonthCell,但不幸的是,它不是从System.eventargs继承的。这是一个问题,因为事件的eventargs必须继承自System.EvenArgs,以便Prism EventToCommand行为正确使用它

目标:我试图使用prism行为绑定OnMonthCellLoaded事件,以便设置MonthCell的数据上下文。我希望这是清楚的

当前情况:

我对SfCalendar日历进行了如下扩展:

 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

问候,

维涅什库马尔