2011-01-13 3 views
7

J'ai simple fenêtre. C'est ce qui se passe lorsque je clique sur ComboBox: Screenshot La liste apparaît dans le coin supérieur gauche de l'écran au lieu de sous Combobox.C# Strange WPF Combobox Comportement

XAML:

<Window x:Class="WpfPortOfTestingCamera.VideoSettings" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="Video Settings" WindowStartupLocation="CenterOwner" ResizeMode="NoResize" ShowInTaskbar="False" mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" SizeToContent="WidthAndHeight" d:DesignHeight="167"> 
    <StackPanel Name="stackPanel1" VerticalAlignment="Top" HorizontalAlignment="Center"> 
     <GroupBox Header="Settings" Name="groupBox1"> 
      <Grid Name="grid1" VerticalAlignment="Center" HorizontalAlignment="Center"> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="80*" /> 
        <ColumnDefinition Width="175*" /> 
       </Grid.ColumnDefinitions> 
       <Grid.RowDefinitions> 
        <RowDefinition /> 
        <RowDefinition /> 
       </Grid.RowDefinitions> 
       <Label Content="Resolution:" Height="28" Name="label1" Margin="0" HorizontalAlignment="Left" VerticalAlignment="Center" /> 
       <Label Content="Framerate:" Height="28" HorizontalAlignment="Left" Margin="0" Name="label2" VerticalAlignment="Center" Grid.Row="1" /> 
       <ComboBox Grid.Column="1" Height="23" HorizontalAlignment="Left" Margin="0" Name="comboBox1" VerticalAlignment="Center" Width="150" SelectionChanged="comboBox1_SelectionChanged" /> 
       <ComboBox Height="23" HorizontalAlignment="Left" Margin="0" Name="comboBox2" VerticalAlignment="Center" Width="150" Grid.Column="1" Grid.Row="1" SelectionChanged="comboBox2_SelectionChanged" /> 
      </Grid> 
     </GroupBox> 
     <Label Name="labelSelectedSize" Content="Size @ FPS" /> 
     <Button Name="button1" Content="Apply" Click="button1_Click" /> 
    </StackPanel> 
</Window> 
+0

Il pourrait être lié à ceci: http://stackoverflow.com/questions/1998024/wpf-combobox-dropdown-part-appears-in-the-wrong-place – MarcelDevG

+2

ok pour moi Works. Qu'avez-vous dans le code derrière? –

+0

@Andrei Pana C'est arrivé quand j'ai ouvert cette fenêtre dans l'événement Loaded d'un autre. J'ai vraiment besoin d'une solution pour cela. – Hooch

Répondre

5

Au lieu d'ouvrir directement dans l'événement Loaded, juste la file d'attente d'un autre message sur le Dispatcher pour l'ouvrir.

+0

+1 Kent Boogaart. – user7116

+0

Ya, son fonctionnement. –

1

Je suis tombé sur exactement cela et juste posté un exemple au WPF ComboBox DropDown part appears in the wrong place qui a fonctionné pour moi. Le lecteur intéressé peut y aller pour prendre connaissance de mon commentaire, mais voici l'extrait (REMARQUE: WindoBaseLoadedHandler est le gestionnaire « chargé = » spécifié dans le XAML):

protected void WindowBaseLoadedHandler(object sender, RoutedEventArgs e) 
{ 

... lignes non essentiels de code supprimés. ..

if (DataContext != null) 
    { 
     Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() => 
     { 
      this.IsEnabled = false; 

      LoginDlg loginDlg = new LoginDlg(); 
      loginDlg.ShowDialog(); 

      if (!loginDlg.Success) 
      { 
       /*----------------------------------- 
       * Log on failed -- terminate app... 
       *----------------------------------*/ 
       ...termination logic removed... 
      } 

      this.IsEnabled = true; 
     })); 
    }