Странное поведение на ShowDialog в WPF - PullRequest
1 голос
/ 17 октября 2010

Я создаю отдельное окно, проектирую его с помощью XAML, и когда я вызываю ShowDialog из основной формы, кажется, что мой диалог (окно) мигает один раз, а затем показывает себя. Это обычное поведение? Я не заметил этого во время работы с Windows Forms. Я также запустил приложение на другом компьютере, и получил то же самое. Это беспокоит меня, потому что я разрабатывал простую игру, и это не тот эффект, который я хотел бы, чтобы пользователи испытывали.


Это не сложный диалог, учитывая дизайн. Он содержит только ярлык и кнопку. Вот один из примеров:

<Window x:Class="A_Boggle.Info"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Info" Height="300" Width="670" AllowsTransparency="True" WindowStyle="None" Background="Transparent" BorderBrush="Transparent" Foreground="Transparent" ShowInTaskbar="False" ResizeMode="NoResize" WindowStartupLocation="CenterScreen" Closing="Window_Closing">
<Grid>
    <Border Background="Transparent" Visibility="{Binding Visibility}">
        <Border BorderBrush="#FF7C4400" BorderThickness="4"
            CornerRadius="10,0,10,0" VerticalAlignment="Center"    HorizontalAlignment="Center" Height="177.5" Width="596.25">
            <Border.Background>
                <RadialGradientBrush Center="0.5,0.5" GradientOrigin="0.5,0.5" RadiusX="0.479" RadiusY="0.524">
                    <GradientStop Color="#FFF58611" Offset="0"/>
                    <GradientStop Color="#FFF58611" Offset="0.11798000335693359"/>
                    <GradientStop Color="#FFE9B231" Offset="1"/>
                </RadialGradientBrush>
            </Border.Background>
            <Border.BitmapEffect>
                <DropShadowBitmapEffect Color="Black" Opacity="0.5" Direction="270" ShadowDepth="0.7" />
            </Border.BitmapEffect>
            <Grid>
                <Separator Height="20" Name="separator1" Margin="8.75,0,6.25,45" VerticalAlignment="Bottom" />
                <Button Style="{DynamicResource OrangeButton}" Margin="406.25,0,6.25,6" Height="37.75" VerticalAlignment="Bottom" FontSize="16" Name="dialogButton" Click="dialogButton_Click"></Button>
                <Label FontFamily="Resources/#French Grotesque" FontSize="20" Foreground="#FF7C4400" Margin="8.75,20,6.25,71.25" Name="messageLabel"></Label>
            </Grid>
        </Border>
    </Border>
</Grid>

1 Ответ

1 голос
/ 17 октября 2010

Нет. Мигание на ShowDialog не является обычным поведением. Не могли бы вы сначала попробовать с пустым окном:

new Window().ShowDialog();

чтобы увидеть, сохраняется ли проблема?

Помимо основной темы, WPF / XAML может быть не самой подходящей технологией для сложной игры из-за соображений производительности (хотя для простой должна быть в порядке).

...