2010-11-12 80 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解決了這個問題。