XAML 中的 Materialise Design - 不适用于自定义 XAML 控件

Materialize Design in XAML - does not work for custom XAML controls

我有以下继承自 TextBox 的自定义控件:

class MyTextBox : TextBox {

    //custom properties, events and functions
}

就是这么用的..

    <TextBox Width="100" Height="30" Text="TextBox" Margin="20" />
    <local:MyTextBox Width="100" Height="30" Text="12345" Margin="20" />

我在我的项目中使用了 Material Design In XAML Toolkit,它运行良好,除了 MyTextBox 没有 "Material Effect",如在下面的截图。

我应该怎么做才能在 MyTextBox 中赋予 material 设计风格?

通过 属性 TargetType 应用样式。创建新类型时,它不会被选为 TextBox 以应用 MaterialDesignTextBox 样式。

您必须有一个样式,可能是由 VisualStudio 在您的 Generic.xaml 中为您的 MyTextBox 自动创建的。您需要将其更改为:

<Style TargetType="{x:Type controls:MyTextBox}" BasedOn="{StaticResource MaterialDesignTextBox}"/>

所以 WPF 知道将样式应用于 MyTextBox 类型以及 TextBox

尝试应用文本框,属性 borderthickness (0,0,0,2) 你会得到与 material 设计相同的效果!