2010-01-11 2 views
0

J'ai un problème, visible à l'exécution et dans Expression Blend, où le texte bloque (pas les zones de texte, les boutons ou les contrôles personnalisés) dans ma grille de mise en page continue de pousser eux-mêmes en dehors de leurs cellules, les rendant invisibles. Si je touche l'une de leurs propriétés dans Blend (par exemple en incrémentant puis en décrémentant l'une des marges), elles deviennent visibles dans Blend, mais pas au moment de l'exécution. Voici une capture d'écran montrant le phénomène dans Blend. Vous voyez les guides de conception pointés vers où le contrôle devrait être, mais son emplacement réel au-dessus du haut de la toile.Les contrôles XAML se désactivent, deviennent invisibles dans Blend et navigateur

Controls are offset in Blend http://tinyurl.com/y9ttscf

Mise à jour: Ci-dessous j'ai posté le XAML, avec les VisualStateGroups enlevés (car ils ajoutent une complexité considérable à l'XAML et le problème se manifeste sans eux). Le contrôle sélectionné ci-dessus est "loginTextBlock" ci-dessous.

<navigation:Page 
    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:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation" 
    mc:Ignorable="d" xmlns:UserControls="clr-namespace:MyClient.UserControls" xmlns:MyClient_Controls="clr-namespace:MyClient.Controls;assembly=MyClient.Controls" xmlns:controlsToolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit" x:Class="MyClient.Views.Login" 
    d:DesignWidth="640" d:DesignHeight="480" 
    Title="Login" 
    > 

    <Grid x:Name="LayoutRoot"> 
     <Grid HorizontalAlignment="Center" Margin="0,16,0,0" VerticalAlignment="Top"> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="Auto"/> 
       <RowDefinition Height="Auto"/> 
       <RowDefinition Height="Auto"/> 
       <RowDefinition Height="Auto"/> 
       <RowDefinition Height="Auto"/> 
       <RowDefinition Height="Auto"/> 
      </Grid.RowDefinitions> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="Auto"/> 
       <ColumnDefinition Width="Auto"/> 
      </Grid.ColumnDefinitions> 
      <TextBlock x:Name="loginTextBlock" HorizontalAlignment="Center" Style="{StaticResource HeaderTextStyle}" VerticalAlignment="Center" Text="Login" Grid.ColumnSpan="2" Margin="0,8"/> 
      <TextBlock x:Name="usernameTextBlock" HorizontalAlignment="Right" VerticalAlignment="Center" Grid.Row="1" Text="User name:" TextWrapping="Wrap"/> 
      <TextBox x:Name="usernameTextBox" HorizontalAlignment="Left" Margin="8,8,0,8" VerticalAlignment="Center" Width="175" Grid.Column="1" Grid.Row="1" TextWrapping="Wrap" TabIndex="0" FontSize="16" Height="28" Padding="2"/> 
      <TextBlock x:Name="passwordTextBlock" HorizontalAlignment="Right" VerticalAlignment="Center" Grid.Row="2" Text="Password:" TextWrapping="Wrap"/> 
      <PasswordBox x:Name="passwordBox" HorizontalAlignment="Left" Margin="8,8,0,8" VerticalAlignment="Center" Width="175" Grid.Column="1" Grid.Row="2" TabIndex="1" FontSize="16" Height="28" Padding="2"/> 
      <Button x:Name="okButton" Height="32" HorizontalAlignment="Center" Margin="0,16,0,0" VerticalAlignment="Top" Width="96" Content="OK" Grid.Row="3" TabIndex="2" Click="okButton_Click" Grid.ColumnSpan="2"/> 
      <UserControls:StatusTextBlockControl x:Name="verifyingStatusTextBlockControl" Margin="8,16,8,8" VerticalAlignment="Center" Grid.Row="4" HorizontalAlignment="Center" Grid.ColumnSpan="2" Text="Verifying credentials..."/> 
      <MyClient_Controls:LoginAttemptsCounter x:Name="loginAttemptsCounter" HorizontalAlignment="Center" Margin="8" VerticalAlignment="Center" Grid.ColumnSpan="2" Grid.Row="5" FirstFailureMessage="Please re-enter your Windows credentials.&#x0a;After 2 more failed attempts, your account will be locked." Height="30"/> 
     </Grid> 

    </Grid> 

</navigation:Page> 

Répondre

0

Pour une raison quelconque, quand ma commande « LoginAttemptsCounter » est dans la grille (en bas), il a été chambouler les contrôles TextBlock. Au lieu de cela, j'ai changé ma disposition pour envelopper la grille dans un StackPanel et placer le LoginAttemptsCounter dans le StackPanel sous la grille plutôt que dans la rangée du bas de la grille. Cela a fonctionné. L'élément clé est que mon contrôle personnalisé ne peut pas être dans le même conteneur (StackPanel ou la grille) que les TextBlocks.

Questions connexes