Отключить маску непрозрачности для TextBlock - PullRequest
1 голос
/ 03 апреля 2011

Я пытаюсь создать собственную зачеркнутую линию для WP7 (поскольку она не поддерживает зачеркивание SL4 / WPF).

Я сделал это, создав прямоугольник высотой 2 пикселя и поместив его33% снизу (по умолчанию для зачеркивания шрифта Segeo WP).

Однако это довольно странная проблема с чем-то, похожим на маску непрозрачности.

Зачеркнутый текст делает некоторые маски для текстового блока, и это очень намеренно.Поэтому я ищу какие-либо идеи о том, как я могу это исправить.

Фрагмент XAML:

<TextBlock x:Name="ContentContainer"
           Text="{TemplateBinding Content}"
           Grid.Column="0"
           Foreground="{TemplateBinding Foreground}"
           HorizontalAlignment="Left"
           Margin="0,0,0,0"
           OpacityMask="{x:Null}"
           Padding="{TemplateBinding Padding}"
           FontSize="{StaticResource PhoneFontSizeLarge}" />

<Rectangle x:Name="CheckBorder"
           Fill="{StaticResource PhoneDisabledBrush}"
           Margin="0,26,0,15"
           OpacityMask="{x:Null}"
           Width="{Binding Width, ElementName=ContentContainer}"
           Height="2"/>

Как вы можете видеть, я пытался установить OpacityMask в {x:Null}, но, увы, это никак не влияет.

1 Ответ

2 голосов
/ 03 апреля 2011

Я не уверен, что это проблема OpacityMask - вместо этого я думаю, что это два набора кистей PhoneDisabledColor, которые объединяются вместе.

Из ресурсов это выглядит так: PhoneDisabledColor - это 40% непрозрачности белого цвета

 <Color x:Key="PhoneDisabledColor">#66FFFFFF</Color>

Поэтому, когда вы размещаете два объекта с такой непрозрачностью друг на друга, вы получаете эффект рисования, который вы видели - участки с непрозрачностью более 40%.

Существуетрешение для зачеркивания, перечисленное здесь - http://forums.silverlight.net/forums/t/19749.aspx

Редактировать / обновить - глядя на это решение, я думаю, что оно может показать ту же проблему, что вы видели.


Найдено через Вычеркнутый текст в Windows Phone 7

...