如何使用拇指使 WPF 弹出窗口可拖动?
Posted
技术标签:
【中文标题】如何使用拇指使 WPF 弹出窗口可拖动?【英文标题】:How do I make a WPF popup draggable using a thumb? 【发布时间】:2011-07-28 15:11:54 【问题描述】:我在网上搜索了很长时间并且很难找到这样的例子。我已经看到了替代方法,但我想专门使用拇指。在试图找出一个解决方案时,我一直无法正确/工作,因为我对 WPF 还很陌生。如果有人能举例说明您如何实施上述方法,我将不胜感激。
干杯
【问题讨论】:
【参考方案1】:Popup
并没有给你一个明显的移动它的方法;您只能相对于其放置目标放置它。但是,它确实为您提供了相对于放置目标的额外偏移量,这足以将其移动到任何地方。
这是一个有效的纯标记解决方案,演示了可拖动的 Popup
使用 Thumb
和 Markup Programming。有一个文本框,当文本框接收到键盘焦点时会弹出一个弹出窗口。弹出窗口有一些文本和一个拇指。
<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>
【讨论】:
在 .NET 3.5 中可以使用标记编程吗?以上是关于如何使用拇指使 WPF 弹出窗口可拖动?的主要内容,如果未能解决你的问题,请参考以下文章