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 设计相同的效果!
我有以下继承自 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 设计相同的效果!