Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何在日历中断日期检测鼠标双击?_.net_Wpf_Calendar_Double Click - Fatal编程技术网

.net 如何在日历中断日期检测鼠标双击?

.net 如何在日历中断日期检测鼠标双击?,.net,wpf,calendar,double-click,.net,Wpf,Calendar,Double Click,在我的WPF/C#app中,我有一个Calendar控件,设置了BlackoutDates范围。我还想处理MouseDoubleClick事件,但我看不出如何确定用户双击了一个断电日期-在这种情况下,返回给事件处理程序的日期是最近选择的有效日期(即非断电日期)。我如何“忽略”双击这些停电日期 编辑: XAML: 您可以通过定义日历日按钮样式来处理每个日历日按钮的鼠标双击: <Calendar x:Name="cal"> <Calendar.CalendarDayButt

在我的WPF/C#app中,我有一个
Calendar
控件,设置了
BlackoutDates
范围。我还想处理
MouseDoubleClick
事件,但我看不出如何确定用户双击了一个断电日期-在这种情况下,返回给事件处理程序的日期是最近选择的有效日期(即非断电日期)。我如何“忽略”双击这些停电日期

编辑:
XAML:


您可以通过定义
日历日按钮样式来处理每个
日历日按钮的
鼠标双击

<Calendar x:Name="cal">
    <Calendar.CalendarDayButtonStyle>
        <Style TargetType="CalendarDayButton">
            <EventSetter Event="MouseDoubleClick" Handler="cal_MouseDoubleClick" />
        </Style>
    </Calendar.CalendarDayButtonStyle>
</Calendar>

您可以通过定义
日历日按钮样式来处理每个
日历日按钮的
鼠标双击

<Calendar x:Name="cal">
    <Calendar.CalendarDayButtonStyle>
        <Style TargetType="CalendarDayButton">
            <EventSetter Event="MouseDoubleClick" Handler="cal_MouseDoubleClick" />
        </Style>
    </Calendar.CalendarDayButtonStyle>
</Calendar>

我们能看看密码吗?@MattL。不确定这会有什么帮助,但我会补充一些东西。我们能看看代码吗?@MattL。我不确定这会有什么帮助,但我会补充一些东西这很好!然而。。。我也在使用MVVM模式的
Interaction.Triggers
并没有找到如何有效地将处理程序移动到视图模型,而不是将其放入后面的代码中。建议?或者我应该再问一个问题是的,请回答。不要在评论栏问其他问题,而是给你一个线索;编写调用命令的附加行为。或者简单地从视图中的代码隐藏事件处理程序调用该命令。您不能在样式中应用交互触发器。这太棒了!然而。。。我还在MVVM模式中使用
Interaction.Triggers
,但我不知道如何有效地将处理程序移动到视图模型,而不是将其放在代码后面。建议?或者我应该再问一个问题是的,请回答。不要在评论栏问其他问题,而是给你一个线索;编写调用命令的附加行为。或者简单地从视图中的代码隐藏事件处理程序调用该命令。不能在样式中应用交互触发器。
<Calendar x:Name="cal">
    <Calendar.CalendarDayButtonStyle>
        <Style TargetType="CalendarDayButton">
            <EventSetter Event="MouseDoubleClick" Handler="cal_MouseDoubleClick" />
        </Style>
    </Calendar.CalendarDayButtonStyle>
</Calendar>
private void cal_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
    System.Windows.Controls.Primitives.CalendarDayButton button = sender as System.Windows.Controls.Primitives.CalendarDayButton;
    DateTime clickedDate = (DateTime)button.DataContext;
    if (!cal.BlackoutDates.Contains(clickedDate))
    {
        MessageBox.Show("No blackout date was clicked!");
    }
}