通过后面的代码动态对齐 Datepicker 按钮和 Datepicker 的日历

Posted

技术标签:

【中文标题】通过后面的代码动态对齐 Datepicker 按钮和 Datepicker 的日历【英文标题】:To align the Datepicker button and calender of Datepicker dynamically through code behind 【发布时间】:2018-11-13 11:16:00 【问题描述】:

我的要求是在DatePicker 控件中将DatePicker 按钮和日历对齐到最右侧(仅通过后面的代码)。我正在创建一个DatePicker 控件,如果数据类型是日期,则该控件会动态生成。

这是当前的代码:

if (type.ToLower() == "date")

  control = new DatePicker();

  (control as DatePicker).Name = name;
  (control as DatePicker).FontSize = 24;
  (control as DatePicker).FontWeight = FontWeights.Light;
  (control as DatePicker).MinWidth = 450;
  (control as DatePicker).HorizontalContentAlignment = HorizontalAlignment.Left;
  (control as DatePicker).VerticalAlignment = VerticalAlignment.Center;

只是想知道,我应该写什么额外的东西来保持DatePicker按钮在右边,这样 日历也应该在右侧打开,即DatePicker 按钮的底部。

【问题讨论】:

【参考方案1】:

不要设置LeftHorizontalContentAlignment 属性。如果您避免这样做,日历按钮将最终位于TextBox 的右边缘。

如果您希望日历显示在按钮下方,您可以处理DatePickerLoaded 事件并在模板中设置PopupPlacementTarget 属性:

(control as DatePicker).FontSize = 24;
(control as DatePicker).FontWeight = FontWeights.Light;
(control as DatePicker).MinWidth = 450;
(control as DatePicker).VerticalAlignment = VerticalAlignment.Center;
(control as DatePicker).Loaded += (ss, ee) =>

    DatePicker dp = (DatePicker)ss;
    System.Windows.Controls.Primitives.Popup popup = dp.Template.FindName("PART_Popup", dp) as System.Windows.Controls.Primitives.Popup;
    Button button = dp.Template.FindName("PART_Button", dp) as Button;
    if (popup != null && button != null)
        popup.PlacementTarget = button;
;

【讨论】:

只是想从你这里知道,我怎样才能让按钮(PART_Button)看起来更大。我尝试通过设置 button.Height 来增加高度,但没有成功。 如果您还有其他问题,请提出新问题。

以上是关于通过后面的代码动态对齐 Datepicker 按钮和 Datepicker 的日历的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI iOS 14 中 DatePicker 的中心对齐

jQuery TOOLS datepicker - 单击按钮后打开日历

通过asp.net中的代码向网页添加按钮并删除动态数据库条目

按钮标签和与动态内容的垂直对齐

如何在网页上自动加载JQuery datepicker显示日历?需详细说明,将网页代码附上。

Android UI - 动态按钮对齐更改