gpt4 book ai didi

wpf - 单击/触摸 PART_Textbox 时切换日期选择器日历

转载 作者:行者123 更新时间:2023-12-02 02:45:40 25 4
gpt4 key购买 nike

我正在用 xaml 编写日期选择器样式日历弹出窗口由日期选择器文本框旁边的日历按钮切换我希望在单击/触摸文本框时日历也能切换

将事件触发器添加到日期选择器样式时,日历会在触摸文本框时切换,但仅在单击鼠标时显示并保持打开状态,当单击/触摸日期选择器日历按钮时,日历会立即打开和关闭。

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

我的问题:

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

最佳答案

忘记EventTrigger,因为它没有给您足够的控制权。无需使用它,只需将 bool IsDropDownOpen 属性添加到 View 模型或隐藏代码中,并将其绑定(bind)到 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;
}

关于wpf - 单击/触摸 PART_Textbox 时切换日期选择器日历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20949608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com