【问题标题】:c# wpf - Right-Click to change SelectedDate and show ContextMenuc# wpf - 右键单击​​更改 SelectedDate 并显示 ContextMenu
【发布时间】:2015-10-02 07:56:01
【问题描述】:

我想在 RadCalendar 中实现右键单击事件来更改 SelectedDates 并同时显示 ContextMenu。我正在使用此代码:

XAML

<telerik:RadCalendar Name="radCalendar"
                     Canvas.Left="80"
                     Canvas.Top="200"
                     Height="320"
                     Width="400"
                     SelectedDate="{Binding CurrentDate, ElementName=radScheduleView, Mode=TwoWay}"
                     SelectionMode="Single"
                     DisplayDate="{Binding DisplayDate, Mode=TwoWay}">
    <telerik:RadContextMenu.ContextMenu>
        <telerik:RadContextMenu Opened="RadContextMenu_Opened">
            <telerik:RadMenuItem x:Name="expandOverview"
                                 Header="Expand Overview"
                                 Click="expandOverview_Click" />
            <telerik:RadMenuItem x:Name="showLayouts"
                                 Header="Show Layouts"
                                 Click="showLayouts_Click" />
        </telerik:RadContextMenu>
    </telerik:RadContextMenu.ContextMenu>
</telerik:RadCalendar>

CS

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;
        }
    }
}

如果我删除radCalendar.SelectedDate = calendarButtonContent.Date; 中的评论,我可以通过右键单击选择日期,但我需要再次右键单击以显示 ContextMenu,如果我将其保留在评论中,我将显示 ContextMenu,但我无法更改 SelectedDates用右键单击。

【问题讨论】:

    标签: c# wpf calendar contextmenu right-click


    【解决方案1】:

    已解决

    我没有使用 Opened,而是使用了 Opening 并添加了处理的属性

    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;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-07-20
      • 2022-01-15
      • 1970-01-01
      • 2013-06-18
      • 1970-01-01
      • 2011-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多