我们正试图为我们制作的自定义文本块控件制作一种隐含的样式 此自定义控件基于文本块并添加一些DP和逻辑 当我们在本地使用这种风格时,一切正常。此外,当我们给这个风格一个关键时,它也有效。
这是自定义控件继承代码:
public class HighlightTextBlock : TextBlock
,这就是风格:
<Style TargetType="UI:HighlightTextBlock"
x:Name="LocalHighlightTextBlockStyle"
BasedOn="{StaticResource StyleHighlightTextBlockDefault}">
<Setter Property="HighlightedText"
Value="{Binding ElementName=txtSearchBox, Path=Text}"></Setter>
<Setter Property="Background" Value="Tomato"></Setter>
<!--<Setter Property="HighlightedText" Value="{Binding UpdateSourceTrigger=PropertyChanged,
Mode=TwoWay, RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type UI:GenericWatchControl}}, Path=SearchTextBoxContent}" />-->
<!--<Style.Triggers>
<Trigger Property="Text" Value="{x:Static ProfilingServerShared:MissingDataValue.NotAvailableText}">
<Setter Property="Foreground" Value="LightGray" />
</Trigger>
</Style.Triggers>-->
</Style>
全部谢谢
答案 0 :(得分:1)
您应该在HighlightTextBlock
静态构造函数中覆盖元数据,如下所示:
public partial class HighlightTextBlock : TextBlock
{
static HighlightTextBlock()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(HighlightTextBlock),
new FrameworkPropertyMetadata(typeof(HighlightTextBlock)));
}
}
如果您不这样做,默认情况下,HighlightTextBlock
会尝试查找TextBlock
的隐式样式,而不是HighglightTextBlock
。