2011-01-13 25 views
7

Ho una finestra semplice. Questo è ciò che accade quando faccio clic su ComboBox: Screenshot L'elenco viene visualizzato nell'angolo in alto a sinistra dello schermo anziché in Combobox.C# Comportamento Combobox WPF strano

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

potrebbe essere collegato a questo: http://stackoverflow.com/questions/1998024/wpf-combobox-dropdown-part-appears-in-the-wrong-place – MarcelDevG

+2

funziona bene per me. Cosa hai nel codice? –

+0

@Andrei Pana È successo quando ho aperto questa finestra nell'evento caricato da un altro. Ho davvero bisogno di riparazioni per questo. – Hooch

risposta

5

Invece di aprire direttamente in caso Loaded, proprio in coda un altro messaggio sul Dispatcher per aprirlo.

+0

+1 Kent Boogaart. – user7116

+0

Ya, sta funzionando. –

1

Mi sono imbattuto in questo e appena pubblicato un esempio al WPF ComboBox DropDown part appears in the wrong place che ha funzionato per me. Il lettore interessato può andare lì a sfogliare il mio commento, ma ecco la frammento (NOTA: WindoBaseLoadedHandler è il "Loaded =" gestore specificato nel XAML):

protected void WindowBaseLoadedHandler(object sender, RoutedEventArgs e) 
{ 

... linee non essenziali di codice rimossi. ..

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; 
     })); 
    }