Всплывающее окно не закрывается при прокрутке - PullRequest
3 голосов
/ 09 марта 2012

У меня есть текстовое поле, в котором, когда оно имеет фокус, под ним появляется всплывающее окно. Но когда всплывающее окно открыто и я прокручиваю его, оно остается в том же месте, где оно было открыто. Мне нужна помощь в выяснении того, как всплывающее окно появляется под текстовым полем. Как бы я сделал это в xaml?

Спасибо!

MainWindow View:

<Grid x:Name="LayoutRoot">
    <ScrollViewer>
        <local:ControlView/>

    </ScrollViewer>
</Grid>

Словарь ресурсов:

<Style TargetType="{x:Type Popup}">
    <Style.Triggers>
        <DataTrigger Binding="{Binding ElementName=txtTest, Path=IsKeyboardFocused}" Value="True">
            <Setter Property="IsOpen" Value="True" />
        </DataTrigger>
        <DataTrigger Binding="{Binding ElementName=txtTest, Path=IsKeyboardFocused }" Value="False">
            <Setter Property="IsOpen" Value="False" />
        </DataTrigger>
    </Style.Triggers>
</Style>
<Style x:Key="BorderStyle" TargetType="{x:Type Border}">
    <Setter Property="Background" Value="LemonChiffon"/>
    <Setter Property="Padding" Value="5"/>
</Style>

UserControl View:

<Grid x:Name="LayoutRoot">
        <StackPanel Grid.Row="1" Grid.Column="4" Orientation="Vertical">
                         <Button Content="Button" Width="100" Height="100"/>
                         <Button Content="Button" Width="100" Height="100"/>
                         <TextBox x:Name="txtTest" HorizontalAlignment="Stretch"/>

                        <Popup Name="TestPopup" StaysOpen="True"
                           PlacementTarget="{Binding ElementName=txtTest}"
                           AllowsTransparency="True" Placement="{Binding ElementName=txtTest}">
                            <Border Style="{DynamicResource BorderStyle}">
                                <GroupBox Header="Test Popup">
                                    <ScrollViewer Margin="0,2,0,0" VerticalScrollBarVisibility="Hidden">
                                     <!--BINDING--> 
                                     <Label Content="Hello World!"/>                             
                                    </ScrollViewer>
                                </GroupBox>
                            </Border>
                        </Popup>
                        <ContentPresenter Content="{Binding testBinding}"
                                          VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
                        </ContentPresenter>
                    </StackPanel>
</Grid>

1 Ответ

1 голос
/ 06 июня 2012

Попробуйте это:

<Style TargetType="{x:Type Popup}">
    <Setter 
        Property="IsOpen" 
        Value="{Binding IsKeyboardFocusedWithin, ElementName=txtTest, Mode=OneWay}"/>
</Style>
...