我有以下从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没有“材质效果”,如下面的屏幕截图所示。

c# - XAML中的实现设计-不适用于自定义XAML控件-LMLPHP

我应该怎么做才能在MyTextBox中赋予这种材料设计风格?

最佳答案

样式通过属性TargetType应用。创建新类型时,不会将其用作TextBox来应用MaterialDesignTextBox样式。

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

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


因此WPF知道将样式应用于MyTextBox类型和TextBox

08-17 11:40