WPF DatePicker不使用Material Design的样式

时间:2018-06-12 20:41:14

标签: c# wpf datepicker styles material-design

我在WPF项目中使用MaterialDesignThemes,我能够看到我正在使用的各种WPF控件正在使用的MaterialDesign样式。但是,在某种特定情况下,我在尝试使用DatePicker来使用MaterialDesign样式时遇到了一些困难。当我在XAML视图中呈现DatePickers时,它按预期工作。不同之处在于,如果它不起作用,日期选择器将在后面的代码中呈现。以下是我的代码。有人可以帮忙吗?

var dp = new DateControl()
{
     Margin = new Thickness(0, 0, _fontSize, 0),
     HorizontalAlignment = HorizontalAlignment.Left,
     Question = q,
     IsReadOnly = IsReadOnly || q.IsReadOnly
};
if (dataValue != null)
{
     DateTime dt = DateTime.MinValue;
     if (DateTime.TryParse(dataValue, out dt) && dt > DateTime.MinValue)
     {
           dp.SetSelectedDate((DateTime?)dt);
    }
    else
    {
         dp.Text = dataValue;
    }
}
if (!IsReadOnly)
    dp.AddHandler(DateControl.LostFocusEvent, new RoutedEventHandler(HandleUserResponse));

MaterialDesignThemes.Wpf.ColorZoneAssist.SetMode(dp, ColorZoneMode.PrimaryDark);

return dp;

1 个答案:

答案 0 :(得分:2)

您应该设置自定义控件的Style属性:

dp.Style = FindResource("MaterialDesignDatePicker") as Style;

MaterialDesignThemes不知道DateControl是什么,并且不会自动将任何样式应用于此类控件。