2010-11-12 79 views
3

发布我的XBAP应用程序后,我缺少所有(或某些)TextBlocks。它看起来像这样:XBAP:发布版本中缺少文本

strange "feature"

按钮应标,应该有不同的TextBlocks遍布主屏幕。

为了让事情更奇怪了:

  • 调试时,该应用程序完美的作品 。
  • 并不是所有的文字都会一直丢失,有些时候会有时间到 时间。
  • 我实施了一个不断变化的LayoutTransform来与 托管浏览器进行rezise。在一些尺寸上,所有 (或某些)文本突然出现。 (使用固定的LayoutTransform, 有时文本也会丢失)。改为RenderTransform并不会改变这种行为。也没有去除rezising。
  • 我正在绘制的图表中的文本缺失。它们在自定义控件中的 OnRender中绘制。
  • 此行为仅在某些计算机上可见。我怀疑他们都安装了.NET 4.0。编译.NET 4.0时,一切正常,但由于.NET 4.0尚未广泛安装,因此我宁愿编译.NET 3.5

任何想法可能会导致此问题的原因是什么?请询问您是否需要更多信息!谢谢!

编辑: 我做了一个小的项目来重现错误。你可以找到它发布的here。请注意,这个错误似乎只影响.NET 4.0。

用WPF浏览器应用程序开始,这是我的Page1.xaml代码

<Page x:Class="BugDemo.Page1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" > 
    <Grid x:Name="LayoutRoot"> 
     <TextBlock FontSize="35" Text="Vanishing Text" /> 
     <Grid.LayoutTransform> 
      <ScaleTransform /> 
     </Grid.LayoutTransform> 
    </Grid> 
</Page> 

代码隐藏:

public partial class Page1 : Page 
{ 
    public Page1() 
    { 
     InitializeComponent();  
     this.Loaded += AppPage_Loaded; 
    } 

    public double Scale 
    { 
     get { return ((ScaleTransform)this.LayoutRoot.LayoutTransform).ScaleX; } 
     set 
     { 
      ((ScaleTransform)this.LayoutRoot.LayoutTransform).ScaleX = value; 
      ((ScaleTransform)this.LayoutRoot.LayoutTransform).ScaleY = value; 
     } 
    } 

    void AppPage_Loaded(object sender, RoutedEventArgs e) 
    { 
     App.Current.MainWindow.SizeChanged += (o, args) => UpdateScale(); 
     UpdateScale(); 
    } 

    private void UpdateScale() 
    {    
     double xscale = (App.Current.MainWindow.ActualWidth)/300; 
     double yscale = (App.Current.MainWindow.ActualHeight)/200; 

     Scale = Math.Min(xscale, yscale);      
    } 
} 

发布此之后,“消失的文本”只能在一些可见缩放级别。它在Debug中正常工作。

回答

2

这似乎是IE9.0测试版中的一个错误。回滚到IE8.0解决了这个问题。