c# - WPF DatePicker 没有使用 Material Design 的样式

标签 c# wpf datepicker styles material-design

我在我的 WPF 项目中使用 MaterialDesignThemes,我能够看到我正在使用的各种 WPF 控件使用的 MaterialDesign 样式。但是,在一种特定情况下,我在尝试让 DatePicker 使用 MaterialDesign 样式时遇到了很大的困难。当我在 XAML View 中呈现 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;

最佳答案

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

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

MaterialDesignThemes 不知道什么是 DateControl,也不会自动将任何样式应用到此类控件。应用于 DatePicker 控件的隐式样式不会被继承。

关于c# - WPF DatePicker 没有使用 Material Design 的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50825527/

相关文章:

jquery - 带事件的日期选择器?

c# - 显示完整 InnerException 的正确方法是什么?

c# - 为什么将存储在对象中的枚举转换为 int 会返回一个字符串?

ios - 如何让 datePicker 在 textField 上显示日期?

javascript - 关注 JqueryUI Datepicker 中 TextField 中的日期

html - 在 WPF 中显示 HTML 内容

c# - 返回非结构化 BsonDocument 作为 ApiController 中的类属性

c# - 数据返回 null,谁能告诉我我在这里做错了什么?

c# - Entity Framework Core – “Insert if not exists” 可能吗?

c# - 绑定(bind)到集合减少到它的属性之一