当前位置: 首页 > 知识库问答 >
问题:

单击/触摸PART_Textbox时切换datepicker日历

长孙德惠
2023-03-14

我正在用xaml编写一个datepicker样式。日历弹出窗口由datepicker的textbox旁边的calendar按钮切换。我希望当单击/触摸textbox时日历也能切换

向datepicker样式添加事件触发器时,日历在触摸textbox时切换,但仅在鼠标单击时显示并保持打开;单击/触摸datepicker日历按钮时,日历立即打开和关闭。

<EventTrigger RoutedEvent="TextBox.PreviewMouseDown">
<EventTrigger.Actions>
    <BeginStoryboard x:Name="myBeginStoryboard">
        <Storyboard x:Name="myStoryboard">
            <BooleanAnimationUsingKeyFrames Storyboard.TargetProperty="IsDropDownOpen">
                <DiscreteBooleanKeyFrame KeyTime="00:00:00"
                                         Value="True" />
            </BooleanAnimationUsingKeyFrames>
        </Storyboard>
    </BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>

我的问题:

  • 有没有比使用事件触发器更好的方法来实现所需的行为?
  • 当事件触发器仅将日历设置为可见时,日历如何显示和隐藏?
  • 是否可以将反向的“isDropDownOpen”值分配给XAML中的此属性?
  • 或者是否可以使用条件语句(if?)在xaml中处理隐藏和显示?

共有1个答案

邴兴为
2023-03-14

忘记eventtrigger吧,因为它没有给您足够的控制权。不使用该属性,只需将bool isdropdownopen属性添加到视图模型或后面的代码中,并将其绑定到datepicker.isdropdownopen属性。通过这种方式,您可以随时打开和关闭弹出窗口并/或响应任何单个事件或事件集合。例如:

public void TextBoxPreviewMouseDown(object sender, MouseButtonEventArgs e)
{
    IsDropDownOpen = true;
}

private void TextBoxPreviewTouchDown(object sender, TouchEventArgs e)
{
    IsDropDownOpen = true;
}

private void DatePickerSelectedDateChanged(object sender, SelectionChangedEventArgs e)
{
    IsDropDownOpen = false;
}
 类似资料:
  • 我想显示datepicker弹出窗口。我找到了一些例子,但我没有得到正确的理解。我有一个edittext,我希望当我单击edittext时,datepicker对话框应该弹出,在设置日期后,日期应该以DD/MM/YYYY格式显示在edittext中。请提供给我样本代码或良好的链接。

  • 问题内容: 如何在vue.js中切换类? 我有以下几点: 当我单击时,我想按以下方式申请课程: 这需要切换,即每次单击它都需要添加/删除类。 问题答案: 您可以让活动类依赖于布尔数据值:

  • 我的菜单显示向下,但然后水平。 我希望每一个导航项目都显示下来,在彼此的上面。 现场测试站点URL:ministerios-elim.herokuapp.com CodePen:(无法使菜单在单击CodePen时出现)。 https://codepen.io/ogonzales/pen/abnqxlg 更新2: 更新3:

  • 问题内容: 我环顾四周,但找不到我想要的东西。 我的页面上目前有一个CSS动画,它是由:hover触发的。当使用媒体查询将页面调整为宽度超过700px时,我希望将其更改为“单击”或“触摸”。 如您所见,:hover不能在移动设备上工作,但我仍然想确保单击即可,而不是将其悬停。 如果可能的话,我宁愿使用CSS,但也对JQuery满意。 我觉得这很容易做到,但我只是缺少一些非常明显的东西!任何帮助,将

  • 我有一个名为的变量。是一个字符串,可以是“true”或“false”。 默认设置为“false”。 单击按钮时,我要切换值或。因此,在第一次单击按钮时,将为“true”(因为默认情况下它是false),然后,再次单击时,将更改为“false”,依此类推。 我试过(按照这个答案): 但没有成功。 下面是一个演示: null null

  • 问题内容: 我正在尝试获取所选项目,然后开始一些活动。不幸的是,我发现的大多数解决方案都在Objective-C或不起作用。 方法不打印标签。 有人可以帮我吗? 经过几次尝试,我将代码更改为与我发现的教程不同的代码。而且它也不起作用。现在我认为这是iOS模拟器的问题… 问题答案: 如果您想从单元格中获取值,则无需在 任务如下: 您还必须检查您必须设置的标识符。 希望能帮助到你。