2011-04-02 88 views
1

我试图为WP7创建自定义删除线(因为它不支持SL4/WPF strikethough)。禁用TextBlock上的不透明蒙版

我已经通过创建一个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:空},但很可惜,这没有任何效果可言。

回答

2

我不确定这是不是一个不透明蒙板问题 - 相反,我认为这是两套PhoneDisabledColor刷子结合在一起。

从资源,它看起来像PhoneDisabledColor为40%不透明的白色

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

所以,当你把两个对象与此不透明度在彼此的顶部,那么你得到你所见过的绘图效果 - 部分具有超过40%的不透明度。

这里有列出删除线的解决方案 - http://forums.silverlight.net/forums/t/19749.aspx

编辑/更新 - 已经看了看该解决方案,我想这可能表明你已经看到了同样的问题。


通过Strikeout text in Windows phone 7

+0

我与非手机颜色尝试发现,的确是由于其在它们的透明度手机的颜色。另一方面,与使用UserControls相关的解决方案对于WP7来说是一个非常糟糕的解决方案,因为UserControls性能非常差,并且无法进行虚拟化。但是,欢呼起来。 – 2011-04-02 23:50:34