Окно, открытое с showDialog, TextBlock показывает под окном вместо текста - PullRequest
0 голосов
/ 28 марта 2012

У меня странная проблема с wpf. У меня есть окно (полный экран) с изображением, выглядит так: enter image description here

Я открываю новое окно с Showdialog, открывающее это окно, которое не полноэкранное (выглядит как всплывающее окно, но это окно). код такой:

 Window next;  next = new PasswordVerification();
 next.Owner = this;
  next.ShowDialog();

в открытом окне я использую это для центрирования "всплывающего окна":

 this.Left = this.Owner.Left + (this.Owner.Width - this.ActualWidth) / 2;
        this.Top = this.Owner.Top + (this.Owner.Height - this.ActualHeight) / 2;
        this.Topmost = true;

Я получаю что-то вроде этого (я обрезал его, окно немного больше): enter image description here

Где текстовый блок определяется следующим образом:

            <Rectangle Name="errorBorder" Fill="#34FF0000" FlowDirection="RightToLeft" RadiusX="13" RadiusY="13" Stroke="#FFB80005" Visibility="Visible" Margin="43,195,78,203" />
        <TextBlock Name="error" Text="TextBlock" Margin="49,195,91,205" FontSize="20" FlowDirection="RightToLeft" FontWeight="Bold" Foreground="#FFB80000" Visibility="Visible" />

Теперь у меня есть кнопка, которая делает это:

 error.Text = "blabla";

Но вместо того, что я ожидал (что текст изменится), я получаю странные вещи: enter image description here Как вы можете видеть, изображение из заднего окна показывается на моем месте вместо моего текстового блока!

Что здесь происходит ?? Пожалуйста, помогите!

Всплывающее окно XAML:

<Window ...  Width="1000" Height="700"  AllowsTransparency="True" 
WindowStyle="None" 
Background="#00000000"/>
<Border  Style="{StaticResource SmallScreenBorderStyle}" CornerRadius="23" Padding="2" Margin="153.66,117.992,153.661,117.992" d:LayoutOverrides="Width, Height">
 <!-- Use a VisualBrush of 'mask' as the opacity mask -->
        <Grid.OpacityMask>
            <VisualBrush Visual="{Binding ElementName=mask}"/>
        </Grid.OpacityMask>
  <!-- Rounded mask (stretches to fill Grid) to make grid rounded corners -->
        <Border x:Name="mask" CornerRadius="20" Margin="2,5,-1,-5" d:LayoutOverrides="GridBox" Style="{StaticResource MaskBorderStyle}"/>

Ответы [ 2 ]

0 голосов
/ 25 мая 2012

Не могли бы вы попытаться установить для свойства Visible значение false в вашей основной форме, а затем установить значение true после вашего ShowDialog?

0 голосов
/ 29 марта 2012

Несколько предложений:
1) Удалите ваш код, чтобы открыть окно в центре владельца, просто используйте это в вашем Window XAML:

<Window ....
    WindowStartupLocation="CenterOwner">

2) Сократите ваш метод вызова:

Window next = new PasswordVerification {Owner = this};
next.ShowDialog();

3) Положите Rectangle и TextBlock в <StackPanel> или другой контейнер.Вероятно, проблема в том, что эти элементы управления перекрываются, потому что живет внутри Grid.

...