3
发布我的XBAP应用程序后,我缺少所有(或某些)TextBlocks。它看起来像这样:XBAP:发布版本中缺少文本
按钮应标,应该有不同的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中正常工作。