Чтобы выровнять кнопку Datepicker и календарь Datepicker динамически с помощью кода позади - PullRequest
0 голосов
/ 04 июня 2018

Мое требование - выровнять кнопку и календарь 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.

enter image description here

1 Ответ

0 голосов
/ 04 июня 2018

Не устанавливайте HorizontalContentAlignment свойство Left.Если вы этого не сделаете, кнопка календаря окажется на правом краю TextBox.

Если вы хотите, чтобы календарь отображался под кнопкой, вы можете обработать событие LoadedDatePicker и установите свойство PlacementTarget для Popup в шаблоне:

(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;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...