0

edit form (user control)私はいくつかの入力ボックスを備えた典型的な を持っています。現在フォーカスListBoxのある のすぐ下に表示する必要があるため、動的に移動する必要があります。TextBoxバインドを試みましたが、何も起こりません

<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}}}"
/>
4

1 に答える 1

1

必要な場所に表示する機能を提供するため、 a を使用しPopupます。のすぐPlacement = Bottom下に表示されますPlacementTarget

GotFocus、およびLostFocusの を処理しTextBoxます。

        <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;
}
于 2016-10-04T15:43:48.517 に答える