wpf中的可拖动弹出控件
我需要一个wpf中的可拖动弹出控件,我想知道你们中是否有人可以帮助我。我确实看到了以下帖子: 但这不是它应该如何工作。。。?当我点击并拖动它时,它总是重置到一个特定的点,而且评论说这不是一个有效的方法。。。? 有人有别的选择吗wpf中的可拖动弹出控件,wpf,wpf-controls,Wpf,Wpf Controls,我需要一个wpf中的可拖动弹出控件,我想知道你们中是否有人可以帮助我。我确实看到了以下帖子: 但这不是它应该如何工作。。。?当我点击并拖动它时,它总是重置到一个特定的点,而且评论说这不是一个有效的方法。。。? 有人有别的选择吗 谢谢 我们可以编写一个行为,使任何弹出窗口都可以拖动。下面是与文本框关联的弹出窗口的一些示例XAML,该文本框在聚焦时打开并保持打开状态: <Grid> <StackPanel> <TextBox x:Name="t
谢谢 我们可以编写一个行为,使任何
弹出窗口都可以拖动。下面是与文本框关联的弹出窗口的一些示例XAML,该文本框在聚焦时打开并保持打开状态:
<Grid>
<StackPanel>
<TextBox x:Name="textBox1" Width="200" Height="20"/>
</StackPanel>
<Popup PlacementTarget="{Binding ElementName=textBox1}" IsOpen="{Binding IsKeyboardFocused, ElementName=textBox1, Mode=OneWay}">
<i:Interaction.Behaviors>
<local:MouseDragPopupBehavior/>
</i:Interaction.Behaviors>
<TextBlock Background="White">
<TextBlock.Text>Sample Popup content.</TextBlock.Text>
</TextBlock>
</Popup>
</Grid>
如果您不熟悉行为,请安装Expression Blend 4 SDK并添加以下名称空间:
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
并将System.Windows.Interactivity
添加到项目中。您可以使用自定义边框布局打开子窗口。然后添加一个MouseDown处理程序以启用拖动:
<Window
WindowStyle="None"
ShowInTaskbar="False"
ResizeMode="NoResize"
SizeToContent="Height"
MouseDown="Window_MouseDown">
...
</Window>
就像链接的问题所说的,你可能应该使用拇指而不是popupCan。当鼠标移动时,用拇指移动弹出窗口。。。?我不这么认为就我所知。。。?你有没有一个我们可以用拇指拖动的例子?谢谢对不起,我是wpf的初学者…所以如果我的问题看起来很傻…我很抱歉…)这是一个直接的练习,让功能使用代码隐藏。只需添加处理程序并将AssociatedObject更改为popup1.oh ok cool…所以我只需要在代码隐藏中用关联的mouseup mousedown事件替换该行为,是吗?(将AssociatedObject替换为popup1)谢谢!谢谢matthias…很好的建议…如果我不能拖动弹出窗口,那么我想我会使用你的解决方案。我如何设置相对于特定控件的窗口位置,并使其只能在另一个窗口边界内拖动?在确定位置后,应可通过设置window.Left和window.Top来定位窗口使用指针屏幕(…)。我不知道如何把它夹在另一个窗户上。
<Window
WindowStyle="None"
ShowInTaskbar="False"
ResizeMode="NoResize"
SizeToContent="Height"
MouseDown="Window_MouseDown">
...
</Window>
private void Window_MouseDown(Object sender, MouseButtonEventArgs e)
{
this.DragMove();
}