2012-03-09 14 views
3

フォーカスがあるとポップアップが表示されるテキストボックスが表示されます。しかし、ポップアップが開いているときにスクロールすると、開いた場所と同じ場所にとどまるように見えます。スクロールするときに、テキストボックスの下にポップアップを表示させる方法を理解するのに助けが必要です。私はxamlでこれをどうやってしますか?スクロール時にポップアップが閉じない

ありがとうございます!

メインウィンドウ表示:

<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> 

ユーザーコントロールビュー:

<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> 
+3

コードを投稿できますか?テキストボックスはどのコンテナにありますか? –

+0

既にhttp://stackoverflow.com/questions/2309883/wpf-detect-scrolling-parent-controlを読んでいますか? –

+0

開くときにポップアップにフォーカスを当てるべきです。この方法では、ポップアップが閉じない限り、スクロールすることはできません。私が見つけた最良の方法は、コンボボックスのcontroltemplateがmsdnでどのように動作するかを見ています。http://msdn.microsoft.com/en-us/library/ms752094(v=vs.90).aspx – Silvermind

答えて

1

これを試してみてください:

<Style TargetType="{x:Type Popup}"> 
    <Setter 
     Property="IsOpen" 
     Value="{Binding IsKeyboardFocusedWithin, ElementName=txtTest, Mode=OneWay}"/> 
</Style> 
関連する問題