2014-12-22 6 views
0

Мы пытаемся создать стиль внедрения для пользовательского элемента управления текстовым блоком, который мы создали.
Этот настраиваемый элемент управления основан на текстовом блоке и добавляет несколько DP и Logic.
Когда мы используем стиль локально, все работает отлично. Также, когда мы даем стиль ключ, он также работает.текстовое поле пользовательского контроля и неявный стиль

Это код пользовательского элемента управления inheritince:

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> 

Спасибо всем

ответ

1

Вы должны переопределить метаданные в HighlightTextBlock статического конструктора , как таковой:

public partial class HighlightTextBlock : TextBlock 
{ 
    static HighlightTextBlock() 
    { 
     DefaultStyleKeyProperty.OverrideMetadata(typeof(HighlightTextBlock), 
      new FrameworkPropertyMetadata(typeof(HighlightTextBlock))); 
    } 
} 

Если вы не сделаете этого, по умолчанию, HighlightTextBlock попытается найти неявный стиль для TextBlock, не HighglightTextBlock.

+0

Привет, Крис, я сделал это, но это не поможет. –

+0

@iag_oz: вы должны использовать Snoop (google) и посмотреть, что именно происходит в визуальном дереве. Вы также можете проверить атрибут «Стиль». –

+0

ваш ответ отчасти прав, я должен упомянуть, что мы должны добавить неявный стиль к теме или общим файлам XAML, а затем она будет работать хорошо. Спасибо, я помету ваш ответ как правильный. –

Смежные вопросы