c#wpf-右键单击可更改所选日期并显示上下文菜单

c#wpf-右键单击可更改所选日期并显示上下文菜单,c#,wpf,calendar,contextmenu,right-click,C#,Wpf,Calendar,Contextmenu,Right Click,我想在RadCalendar中实现右键单击事件,以更改所选日期,同时显示上下文菜单。我正在使用以下代码: XAML 反恐精英 private void RadContextMenu_打开(对象发送方,路由目标e) { var calendarButton=(发送者作为RadContextMenu)。GetClickedElement(); 如果(calendarButton!=null) { var calendarButtonContent=calendarButton.Content作为

我想在RadCalendar中实现右键单击事件,以更改所选日期,同时显示上下文菜单。我正在使用以下代码:

XAML

反恐精英
private void RadContextMenu_打开(对象发送方,路由目标e)
{
var calendarButton=(发送者作为RadContextMenu)。GetClickedElement();
如果(calendarButton!=null)
{
var calendarButtonContent=calendarButton.Content作为calendarButtonContent;
如果(calendarButtonContent!=null)
{
var clickedDate=calendarButtonContent.Date;
//radCalendar.SelectedDate=calendarButtonContent.Date;
}
}
}

如果我删除
radCalendar.SelectedDate=calendarButtonContent.Date中的注释我可以通过右键单击选择日期,但我需要再次右键单击以显示上下文菜单,如果我将其保留在注释中,则会显示上下文菜单,但我无法通过右键单击更改所选日期。

已解决

我没有使用Opening,而是使用Opening并添加handled属性

private void RadContextMenu_Opening(object sender, Telerik.Windows.RadRoutedEventArgs e)
{
    var calendarButton = (sender as RadContextMenu).GetClickedElement<CalendarButton>();
    if (calendarButton != null && (calendarButton.ButtonType == CalendarButtonType.Date || calendarButton.ButtonType == CalendarButtonType.TodayDate))
    {
        var calendarButtonContent = calendarButton.Content as CalendarButtonContent;
        if (calendarButtonContent != null)
        {
            var clickedDate = calendarButtonContent.Date;
            radCalendar.SelectedDate = calendarButtonContent.Date;
        }
    }
    else
    {
        e.Handled = true;
    }
}
private void RadContextMenu_Opening(对象发送方,Telerik.Windows.RadRoutedEventArgs e)
{
var calendarButton=(发送者作为RadContextMenu)。GetClickedElement();
if(calendarButton!=null&(calendarButton.ButtonType==CalendarButtonType.Date | | calendarButton.ButtonType==CalendarButtonType.TodayDate))
{
var calendarButtonContent=calendarButton.Content作为calendarButtonContent;
如果(calendarButtonContent!=null)
{
var clickedDate=calendarButtonContent.Date;
radCalendar.SelectedDate=calendarButtonContent.Date;
}
}
其他的
{
e、 已处理=正确;
}
}
private void RadContextMenu_Opened(object sender, RoutedEventArgs e)
{
    var calendarButton = (sender as RadContextMenu).GetClickedElement<CalendarButton>();
    if (calendarButton != null)
    {
        var calendarButtonContent = calendarButton.Content as CalendarButtonContent;
        if (calendarButtonContent != null)
        {
            var clickedDate = calendarButtonContent.Date;
            //radCalendar.SelectedDate = calendarButtonContent.Date;
        }
    }
}
private void RadContextMenu_Opening(object sender, Telerik.Windows.RadRoutedEventArgs e)
{
    var calendarButton = (sender as RadContextMenu).GetClickedElement<CalendarButton>();
    if (calendarButton != null && (calendarButton.ButtonType == CalendarButtonType.Date || calendarButton.ButtonType == CalendarButtonType.TodayDate))
    {
        var calendarButtonContent = calendarButton.Content as CalendarButtonContent;
        if (calendarButtonContent != null)
        {
            var clickedDate = calendarButtonContent.Date;
            radCalendar.SelectedDate = calendarButtonContent.Date;
        }
    }
    else
    {
        e.Handled = true;
    }
}