XBAP: пропущенные тексты в опубликованной версии - PullRequest
3 голосов
/ 12 ноября 2010

После публикации моего приложения XBAP мне не хватает всех (или некоторых) текстовых блоков. Это выглядит так:

strange

Кнопки должны быть помечены, на главном экране должны быть различные текстовые блоки.

Чтобы сделать вещи более странными:

  • Это приложение отлично работает при отладке.
  • Не все тексты всегда отсутствуют, некоторые время от времени время.
  • Я реализовал изменение LayoutTransform, чтобы изменить размер с хостинг браузер. На некоторых размерах все (или некоторые) тексты вдруг там. (С фиксированным LayoutTransform, иногда тексты тоже отсутствуют). Вместо этого переход на RenderTransform не меняет это поведение. Также не удаляет резизинг.
  • Тексты на диаграмме, которую я рисую, отсутствуют. Они нарисованы в OnRender в пользовательском элементе управления.
  • Такое поведение наблюдается только на некоторых компьютерах. Я подозреваю, что на всех них установлен .NET 4.0. При компиляции для .NET 4.0 все хорошо, но поскольку .NET 4.0 еще широко не установлен, я бы лучше скомпилировал для .NET 3.5

Есть идеи, что может быть причиной этого? Пожалуйста, спросите, если вам нужно больше информации! Спасибо!

Edit: Я сделал небольшой проект для воспроизведения ошибки. Вы можете найти его опубликованным здесь . Обратите внимание, что эта ошибка влияет только на .NET 4.0.

Начиная с приложения WPF Browser, это мой код в 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>

CodeBehind:

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 Ответ

2 голосов
/ 15 ноября 2010

Это похоже на ошибку в бета-версии IE9.0.Откат к IE8.0 устранил проблему.

...