XBAP:已发布版本中缺少文本

时间:2010-11-12 15:24:33

标签: c# .net wpf xbap

发布我的XBAP应用程序后,我遗漏了所有(或部分)TextBlocks。它看起来像这样:

strange "feature"

按钮应贴上标签,主屏幕上应该有各种TextBlock。

让事情变得更奇怪:

  • 此应用程序完美运行 调试时。
  • 并非所有的文本总是丢失,有些是时间到了 时间。
  • 我实现了一个更改的LayoutTransform来重新设置 托管浏览器。在某些尺寸上,所有 (或一些)文本突然出现。 (使用固定的LayoutTransform, 有时文本也缺失了)。更改为RenderTransform不会更改此行为。也没有删除rezising。
  • 我正在绘制的图表中的文字丢失了。他们被吸引进来 OnRender在自定义控件中。
  • 仅在某些计算机上才会出现此行为。我怀疑他们都安装了.NET 4.0。编译.NET 4.0时,一切都很好,但由于.NET 4.0尚未广泛安装,我宁愿为.NET 3.5编译

任何想法可能导致这个?请询问您是否需要更多信息!谢谢!

修改 我做了一个小项目来重现这个bug。您可以找到它已发布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中工作正常。

1 个答案:

答案 0 :(得分:2)

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