2016-10-04 5 views
0

私はいくつかの入力ボックスを持つ典型的なedit form (user control)です。 ListBoxが必要です。現在のフォーカスのあるTextBoxのすぐ下に表示する必要があるため、動的に移動する必要があります。 は、私はいくつかの結合を試みたが、何も現在のフォーカスでコントロールの横にWPFコントロールを配置する方法はありますか?

<local:MyList x:Name="myList" 
     Canvas.Left="{Binding (FocusManager.FocusedElement).Canvas.Left,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}}" 
     Canvas.Top="{Binding (FocusManager.FocusedElement).Canvas.Bottom,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}}" 
/> 

答えて

1

を起こりません、それはあなたがしたい場所にそれを表示するために、あなたの施設を与えるようPopupを使用してください。そのPlacement = Bottomは、それをちょうどPlacementTargetの下に表示します。

ハンドルGotFocusおよび。

 <TextBox Grid.Column="1" HorizontalAlignment="Left" Height="23" Margin="10,19,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120" GotFocus="TextBox_GotFocus_1" LostFocus="TextBox_LostFocus_1"/> 
     <TextBox Grid.Column="1" HorizontalAlignment="Left" Height="23" Margin="10,57,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120" GotFocus="TextBox_GotFocus_1" LostFocus="TextBox_LostFocus_1"/> 
     <TextBox Grid.Column="1" HorizontalAlignment="Left" Height="23" Margin="10,96,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/> 
     <TextBox Grid.Column="1" HorizontalAlignment="Left" Height="23" Margin="10,136,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120" GotFocus="TextBox_GotFocus_1" LostFocus="TextBox_LostFocus_1"/> 
     <TextBox Grid.Column="1" HorizontalAlignment="Left" Height="23" Margin="10,174,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/> 

     <Popup Placement="Bottom" x:Name="LsbPopup"> 
      <ListBox> 
       <ListBoxItem>item1</ListBoxItem> 
       <ListBoxItem>item1</ListBoxItem> 
       <ListBoxItem>item1</ListBoxItem> 
       <ListBoxItem>item1</ListBoxItem> 
       <ListBoxItem>item1</ListBoxItem> 
       <ListBoxItem>item1</ListBoxItem> 
       <ListBoxItem>item1</ListBoxItem> 
      </ListBox> 
     </Popup> 

ハンドラ:

private void TextBox_GotFocus_1(object sender, RoutedEventArgs e) 
{ 
    LsbPopup.PlacementTarget = sender as TextBox; 
    LsbPopup.IsOpen = true; 
} 

private void TextBox_LostFocus_1(object sender, RoutedEventArgs e) 
{ 
    LsbPopup.IsOpen = false; 
} 
+0

私は "ポップアップ" を知りませんでしたが感謝....存在していました! –

関連する問題