禁用TextBlock上的不透明蒙版

时间:2011-04-02 22:54:26

标签: c# wpf silverlight windows-phone

我正在尝试为WP7创建一个自定义删除线(因为它不支持SL4 / WPF strikethough)。

我通过创建一个2px高的矩形,并从底部放置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 个答案:

答案 0 :(得分:2)

我不确定这是一个OpacityMask问题 - 而是我认为它是两组PhoneDisabledColor画笔组合在一起。

从资源看,PhoneDisabledColor的白色不透明度为40%

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

因此,当您将具有此不透明度的两个对象放在彼此之上时,您将获得您所见过的绘图效果 - 不透明度超过40%的部分。

此处列出了删除线的解决方案 - http://forums.silverlight.net/forums/t/19749.aspx

编辑/更新 - 看过那个解决方案后,我认为它可能会显示您遇到的同样问题。


通过Strikeout text in Windows phone 7

找到