2012-03-28 8 views
0

Ich habe dieses seltsame wpf Problem. Ich habe ein Fenster (Voll screennm) mit einem Bild, sieht wie folgt aus: enter image description hereFenster mit showDialog geöffnet, TextBlock wird unter Fenster anstelle von Text angezeigt

ich ein neues Fenster öffnen mit Showdialog uppon diesem Fenster, die nicht Vollbild ist (sieht aus wie ein Pop-up, aber es ist ein Fenster) . der Code wie folgt aus:

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

auf dem offenen Fenster, das ich dies den „Pop-up“ zum Zentrum verwenden:

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; 

ich so etwas wie dieses (i es abgeschnitten, das Fenster ist gering größer) : enter image description here

Wo der Textblock wie folgt definiert ist:

  <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" /> 

Jetzt habe ich einen Knopf haben, das tut dies:

error.Text = "blabla"; 

Aber statt dessen, was ich erwartet hatte (dass der Text ändert) ich dieses seltsame Zeug: enter image description here Wie Sie, das Bild von hinten sehen Fenster wird leicht angezeigt, anstelle von meinem textBlock!

Was ist hier los ?? Bitte Hilfe!

Das PopUp 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}"/> 
+0

Ich habe eine einfache App erstellt, die versucht, Ihr Verhalten zu reproduzieren, aber es hat wie erwartet funktioniert. Ausgehend von den Bildern gehe ich davon aus, dass das PasswordVerification-Fenster einige Änderungen aufweist, die es wie ein Popup aussehen lassen. Kannst du das zeigen? Oder sie ausschalten, um das Problem einzugrenzen? – SvenG

+0

Ja. Ich bearbeite meinen Beitrag, ich werde einige Xaml hinzufügen – Programer

Antwort

0

paar Vorschläge:
1) Entfernen Sie den Code-Fenster in der Mitte des Besitzers zu öffnen, dies nur in Ihrem Window XAML verwenden:

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

2) Verkürzen Sie Ihre Anrufmethode:

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

3) Setzen Sie y unsere Rectangle und TextBlock in <StackPanel> oder einen anderen Behälter. Wahrscheinlich das Problem, dass diese Steuerelemente sich überlappen, weil sie in Grid leben.

+0

1 fehlt Code. 2 ist nicht notwendig, da mein Code ein bisschen länger ist, ich habe es hier vereinfacht. Ich werde versuchen 3 – Programer

+0

Ich reparierte den Beitrag :) – asktomsk

+0

3 ist nicht gut, da ich sie auf einander brauche – Programer

0

Könnten Sie versuchen, die Visible-Eigenschaft auf Ihrem Hauptformular auf false zu setzen und dann nach Ihrer ShowDialog wieder auf true zu setzen?

Verwandte Themen