将文本框样式应用于控件

时间:2014-01-13 07:28:55

标签: wpf vb.net textbox styles controls

我是Wpf的新手,并尝试使用基于网络的教程

我创建了一个控件(类)名称 MyTextBox ,它继承自 TextBox

Public Class MyTextBox
       Inherits TextBox
.
.
End Class

我在 Application.xaml

中为 TextBox 创建了样式
<Application.Resources>
    <Style TargetType="TextBox">
        <Style.Triggers>
            <Trigger Property="IsFocused" Value="True">
                <Setter Property="Background" Value="Yellow"/>
                <Setter Property="BorderBrush" Value="Gray"/>
                <Setter Property="BorderThickness" Value="2"/>
            </Trigger>
        </Style.Triggers>
    </Style>
</Application.Resources>

当我将MyTextBox添加到我的表单并运行它时,上面的样式适用于TextBox控件,但对MyTextBox控件没有影响

请告诉我如何解决这个问题

Amit Saraf

1 个答案:

答案 0 :(得分:1)

您应该考虑阅读有关wpf或购买书籍的更多信息。

样式已将目标类型定义为TextBox。

<Style TargetType="TextBox">

这就是TextBox类型的所有元素都具有某种风格的原因。

MyTextBox的类型名称为“MyTextBox”,在样式化时与TextBox无关。

WPF比较类型名称,但不比较基本类型名称。

否则将样式应用于类型“Control”将使WPF更改每个Button,TextBox,Labe,ListBox,Border ... WPF中的每个控件都从基类Control类继承。这会搞砸,你不觉得吗?

但是,您可以使用关键字BasedOn指定MyTextBox的样式基于其他内容。

http://msdn.microsoft.com/en-us/library/system.windows.style.basedon%28v=vs.110%29.aspx