Содержимое окна WPF случайным образом разваливается - PullRequest
0 голосов
/ 25 марта 2011

Приложение WPF, использует диалоговое окно для ввода PIN-кода. Обычно это выглядит так: https://picasaweb.google.com/lh/photo/Xl-X6Lxf9QMYSHimMY7gAA?feat=directlink

В киоске Windows XP окно распадается случайно. Нет точного способа воспроизвести его, но дикий щелчок по нему рано или поздно принесет его. https://picasaweb.google.com/lh/photo/-jpkc8_CBKycdASWW4fbyQ?feat=directlink Не всегда точно так, как на картинке, но похожим способом. Похоже, элементы управления расположены неправильно.

В коробке находится сенсорный киоск Wincor Nixdorf, использующий WinXP SP3, Fx 3.5 SP1. Разметка окна такова:

<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
xmlns:loc="clr-namespace:Company.Product.Common.Localization;assembly=Company.Product.Common"
xmlns:locSecurity="clr-namespace:Company.Product.Common.Localization.Security;assembly=Company.Product.Common"
x:Class="Company.Product.Modules.Security.PassPhraseEntryDialog"
x:Name="Window"
Title="{x:Static locSecurity:PassPhraseEntryDialog.Window_Title}"
Width="224" Height="141" mc:Ignorable="d" 
WindowStartupLocation="CenterOwner"
WindowStyle="ToolWindow" 
ResizeMode="NoResize"
Loaded="Window_Loaded">

<Window.Resources>
    <ResourceDictionary>

        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="..\ResourceDictionaries\Styles.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Window.Resources>

<Canvas x:Name="LayoutRoot">
    <Label Content="{x:Static locSecurity:PassPhraseEntryDialog.Password_Label}" Canvas.Left="8" Canvas.Top="8" Width="72" Height="27"/>
    <PasswordBox x:Name="passwordBox" Canvas.Left="77" Canvas.Top="8" Width="118" Height="27"/>
    <Button x:Name="okButton" Width="75" Content="{x:Static loc:Common.Ok}" Canvas.Left="8" Canvas.Top="73." Click="OkButton_Click"  IsDefault="True"/>
    <Button x:Name="cancelButton" Width="75" Content="{x:Static loc:Common.Cancel}" Canvas.Left="125" Canvas.Top="73" IsCancel="True" />
    <TextBlock x:Name="errorMessage" Width="192" Height="19" Canvas.Left="8" Canvas.Top="37" TextWrapping="Wrap" Foreground="Red">
        <TextBlock.Background>
            <SolidColorBrush/>
        </TextBlock.Background>
    </TextBlock>
    <TextBlock Text="{x:Static loc:Common.ChangePin}" Style="{Binding Source={StaticResource  LinkTextStyle}}" HorizontalAlignment="Right" Canvas.Top="41" Canvas.Left="8" Margin="0,10,10,5" Cursor="Hand" x:Name="txtChangePin" MouseLeftButtonUp="txtChangePin_MouseLeftButtonUp" />

</Canvas>

Любые советы или идеи приветствуются.

Ответы [ 2 ]

1 голос
/ 25 марта 2011

Я не знаю точно, в чем причина, но я сильно подозреваю, что это как-то связано с оборудованием рендеринга.

Я бы попытался изменить настройки рендеринга для приложений WPF на целевом компьютере. См. Эту ссылку для соответствующих настроек реестра.

1 голос
/ 25 марта 2011

Вы пытались указать высоту / ширину для вашего холста? Я не верю, что Canvas автоматически изменяет размеры для заполнения доступного пространства, и, возможно, это вызывает путаницу при рендеринге

...