如何使用拇指使WPF弹出窗口可拖动?

时间:2011-04-03 12:56:49

标签: c# wpf popup draggable

我长时间搜索,很难在网上找到这样的例子。我已经看到了替代方法,但我想专门使用拇指。在尝试散列解决方案时,我无法正确/正常工作,因为我是WPF的新手。如果有人可以举例说明如何实施上述内容,我将不胜感激。

干杯

1 个答案:

答案 0 :(得分:4)

Popup并没有给你一个明显的移动方式;您只能相对于其展示位置放置它。然而,它确实为您提供了相对于放置目标的额外偏移量,并且足以将其移动到任何位置。

这是一个仅使用标记的工作解决方案,使用Markup Programming使用Popup演示可拖动的Thumb。有一个文本框,当文本框收到键盘焦点时会弹出一个弹出窗口。弹出窗口有一些文字和拇指。

<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:p="http://markupprogramming.codeplex.com/markup/programming"
    Height="300" Width="300">
    <Grid>
        <StackPanel>
            <TextBox x:Name="textBox1" Width="200" Height="20"/>
        </StackPanel>
        <Popup Name="popup" PlacementTarget="{Binding ElementName=textBox1}"
               IsOpen="{Binding IsKeyboardFocused, ElementName=textBox1, Mode=OneWay}">
            <StackPanel Orientation="Horizontal">
                <TextBlock Background="White" Text="Sample Popup content."/>
                <Thumb Name="thumb" Width="20" Height="20"/>
            </StackPanel>
            <p:Attached.Operations>
                <p:ScriptHandler Path="@FindElement('thumb').DragDelta">
                    @AssociatedObject.HorizontalOffset += @EventArgs.HorizontalChange;
                    @AssociatedObject.VerticalOffset += @EventArgs.VerticalChange;
                </p:ScriptHandler>
            </p:Attached.Operations>
        </Popup>
    </Grid>
</Window>