2011-01-13 37 views
7

私は単純なウィンドウを持っています。 ComboBoxをクリックすると、次のようになります。 Screenshot リストは、コンボボックスの代わりに画面の左上隅に表示されます。C#Strange WPF Comboboxの動作

XAML:代わりにLoadedイベントでそれを直接開く

<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

それはこれに関連している可能性が:http://stackoverflow.com/questions/1998024/wpf-combobox-dropdown-part-appears-in-the-wrong-place – MarcelDevG

+2

は私のために[OK]を動作します。コードの背後には何がありますか? –

+0

@Andrei Pana ロードされたイベントで別のウィンドウからこのウィンドウを開いたときに起こったことです。私は本当にそれを修正する必要があります。 – Hooch

答えて

5

、ちょうどそれを開くためにディスパッチャに別のメッセージをキュー。

+0

+1ケント・ブーゴアート。 – user7116

+0

ええ、その作業。 –

1

私はこれを正確に実行し、ちょうど私のために働いたWPF ComboBox DropDown part appears in the wrong placeに例を掲載しました。興味のある読者は、私のコメントを閲覧するためにそこに行くことができますが、ここでの抜粋です(注:WindoBaseLoadedHandlerはXAMLで指定した「ロード=」ハンドラである):削除コードの

protected void WindowBaseLoadedHandler(object sender, RoutedEventArgs e) 
{ 

...非本質的なライン。 ..

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