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中正常工作。