如何在 WPF 中的 DatePicker 中获取日历

2024-01-09

我需要参考Calendar in a DatePicker object.

我想象这很容易:

DatePicker datePicker = new DatePicker();
Calendar calendar = datePicker.Calendar;

但没有Calendar财产在DatePicker.

有什么办法可以获取该参考吗?


尝试这个:

private void Window_ContentRendered(object sender, EventArgs e)
{
    // Find the Popup in template
    Popup MyPopup = FindChild<Popup>(MyDatePicker, "PART_Popup");

    // Get Calendar in child of Popup
    Calendar MyCalendar = (Calendar)MyPopup.Child;

    // For test
    MyCalendar.BlackoutDates.Add(new CalendarDateRange(
            new DateTime(2013, 8, 1),
            new DateTime(2013, 8, 10)
    ));
}

Note:总是使用FindChild仅当控件完全加载时,否则它将找不到它并给出null。在本例中,我将此代码放入事件中ContentRendered of Window这表示窗口的所有内容已成功加载。

列表FindChild<>:

    public static T FindChild<T>(DependencyObject parent, string childName) where T : DependencyObject
    {
        if (parent == null)
        {
            return null;
        }

        T foundChild = null;

        int childrenCount = VisualTreeHelper.GetChildrenCount(parent);

        for (int i = 0; i < childrenCount; i++)
        {
            var child = VisualTreeHelper.GetChild(parent, i);
            T childType = child as T;

            if (childType == null)
            {
                foundChild = FindChild<T>(child, childName);

                if (foundChild != null) break;
            }
            else
                if (!string.IsNullOrEmpty(childName))
                {
                    var frameworkElement = child as FrameworkElement;

                    if (frameworkElement != null && frameworkElement.Name == childName)
                    {
                        foundChild = (T)child;
                        break;
                    }
                    else
                    {
                        foundChild = FindChild<T>(child, childName);

                        if (foundChild != null)
                        {
                            break;
                        }
                    }
                }
                else
                {
                    foundChild = (T)child;
                    break;
                }
        }

        return foundChild;
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 WPF 中的 DatePicker 中获取日历 的相关文章

随机推荐

  • 为什么部分与页面高度不匹配?

    我正在编写一个报告 该报告需要附加到另一个报告以生成更大的报告 因此它只有标题 页脚和摘要部分 问题是我遇到编译错误 但我不知道原因 这是我的jrxml文件 包含的部分 为简洁起见省略
  • stopPropgation 是否会阻止事件在捕获阶段传播?

    我在看http www quirksmode org js events order html http www quirksmode org js events order html这部分含糊不清 在 Microsoft 模型中 您必须设
  • python中的打印函数对可以打印的字符串长度有限制吗?

    我正在尝试打印一个大字符串 它的大小为 100 Mb 并且需要一次完成 看起来它正在被截断 虽然这不能回答您的问题 但用于移动大量数据print可能是一个坏主意 print is meant用于简短的信息打印输出 它提供了您在移动大数据时通
  • Kotlin / Android Studio - 如何将变量从覆盖 fun 传递到应用程序的其余部分?

    我环顾四周 没有找到解决我的问题的好答案 在我的应用程序上 我有一个计时器 该计时器在单击后停止 我想根据剩余时间计算分数 我可以使用 millisUntilFinished 来计算分数 但我无法在我的应用程序中重用分数变量 您能帮我找到正
  • 限时试用和 Windows 认证

    如果您想对某个应用程序实施限时试用 您可能需要留下一些标志 注册表项 文件等 这样程序就不能被重新安装 是否有任何方案可以让您在完成此操作的同时仍然通过各种 Windows 认证计划 一般来说 申请必须正确 完整 从机器上卸载 这 包括删除
  • ffmpeg - 生成 moov 原子

    我目前正在使用blackmagic的prorecorder录制视频 我使用 ffmpeg 将视频即时转码为 mp4 视频容器 持续时间未知 因为我正在对 prorecorder 输出到命名管道的 ts 进行转码 我的目标是尝试使用浏览器播放
  • 如何在spark中合并两个预排序的rdd?

    我有两个大型 csv 文件 按其中一列进行了预排序 有没有办法利用它们已经排序的事实来更快地获得新的排序 RDD 而无需再次完全排序 简短的回答 不 在使用 Apache Spark 提供的排序工具时 无法利用两个输入 RDD 已经排序的事
  • jqgrid加载大数据集而不分页

    我想知道是否有更好的方法从服务器加载大型 Json 数据集 我使用 jqgrid 作为 loadonce true 我需要一次加载大约 1500 条记录 而且我不使用分页选项 有没有更好的方法来实现这一目标 先感谢您 这是我的网格代码 fu
  • 谷歌表格中填充谷歌表格的平均持续时间

    我有一个从谷歌表单自动填充的谷歌工作表 有一个包含持续时间的列 当我尝试平均这些持续时间时 我得到除以零的错误 我尝试更改单元格格式 但没有任何效果 事实上 无论我选择什么格式 它都不会改变 我认为格式是根据填充工作表的表单来锁定的 对于获
  • 将进程发送到后台并将控制权返回到我的 shell

    我正在为我的 CS 类编写一个 shell 并且该项目的一部分涉及如果用户传入 字符 则在后台运行一个进程 如果一个进程在前台运行 我只需execvp该进程并且它仍然控制着终端 因为它位于前台 但是 如果它是后台进程 我必须在开始执行进程后
  • 无法将函数的数组结果分配给数组

    我正在尝试将函数的数组结果分配给数组 如果我尝试将结果数组的一个元素分配给我的数组 它工作正常 但在尝试将整个结果数组分配给我的数组时它会返回错误 无法分配给数组 Sub test Dim lol 6 as Double lol Hehe2
  • 将存储过程传递给 sp_send_dbmail

    我在 SQL Server 2008 中使用 sp send dbmail 发送查询结果 我将查询移动到一个过程中 并尝试在 sp send dbmail 过程中使用该过程 如下所示 EXEC msdb dbo sp send dbmail
  • 如何为 Foundation 的 Orbit 图像滑块预加载图像?

    使用Zurb的Foundation 4 1 5 最新版本 轨道图像滑块 http foundation zurb com docs components orbit html效果很好 不幸的是 在最初的几秒钟里 所有图像都显示为一个巨大的项
  • 使用groovy Sql批量插入?

    如何在模拟准备好的语句时使用 groovy Sql 进行批量插入 我发现的所有示例都与以下类似 并且不使用准备好的语句 withBatch stmt gt stmt addBatch insert into table field1 fie
  • 从 Eclipse 和 Spark Context 将 Spark 应用程序作为纱线作业提交

    我已经可以提交了local来自我的 Eclipse IDE 的 Spark 作业 用 Scala 编写 但是 我想修改我的 Spark 上下文 在我的应用程序内 以便当我 运行 应用程序 在 Eclipse 内 时 作业将使用 Yarn 作
  • 从服务器导入更改后出现 GIT 错误

    我试图确定为什么网站上的功能可以在本地工作但不能远程工作 所以我的想法是下载远程站点并执行 git diff 以便发现任何差异 然而 自从我这样做以来 所有 GIT 命令都得到满足 fatal Unable to read current
  • R - 如何向 pheatmap 添加线条和文本?

    我正在使用创建热图pheatmap 函数使用以下代码 library pheatmap pheatmap data matrix 1 11 cluster rows F cluster cols F scale none show rown
  • 从用户角度来看,Jenkins 和 Hudson 最显着的区别是什么?

    距 Jenkins 与 Hudson 分手已有 10 个月左右 当查看项目主页时 我想知道 Hudson 和 Jenkins 之间到底有什么区别 从变更日志中我并没有真正学到很多东西 有很多更改 主要区别似乎是 Jenkins 发布频率更高
  • 如何正确传递子进程参数

    我正在尝试自动连接 格式正确的 mp4 视频文件的文件夹 我的问题的这个编辑版本将问题减少到了我困惑的最低水平 原始标题询问了之间的差异subprocess call and subprocess run但事实证明问题出在其他地方 Why
  • 如何在 WPF 中的 DatePicker 中获取日历

    我需要参考Calendar in a DatePicker object 我想象这很容易 DatePicker datePicker new DatePicker Calendar calendar datePicker Calendar