我有一个包含TextBox的网格。我想用户可以在该网格中拖动文本框。我尝试过canDrag属性设置为True,但是它什么也没做。
<Grid AllowDrop="True">
<TextBlock CanDrag="True"/>
</Grid>
答案 0 :(得分:1)
CanDrag
是指拖放功能,例如将图像文件拖放到图像编辑器中。这与简单地在应用程序上移动控件不同。
子控件(在这种情况下为文本块)无法在网格内部自由移动。您需要添加一个画布控件。画布控件会自动扩展以填充其父级,因此它将自动扩展以填充网格。
您可能正在寻找“操纵”,而不是“拖放”。您将需要处理TextBLock的ManipulationStarted
,ManipulationDelta
和ManipulationCompleted
事件:
<Grid>
<Canvas>
<TextBlock ManipulationStarted="TextBlock_ManipulationStarted"
ManipulationDelta="TextBlock_ManipulationDelta"
ManipulationCompleted="TextBlock_ManipulationCompleted"></TextBlock>
</Canvas>
</Grid>
看看“ BasicInput”示例,了解如何进行操作:https://github.com/Microsoft/Windows-universal-samples。
答案 1 :(得分:1)
如何控制键盘键的操作? 我不能限制区域。我尝试使用Canvas,但无法限制区域。
实际上,我们可以将所有内容不仅用于画布。 我在XAML中做到了
<Grid Width="300" Height="300">
<TextBlock Text="mahdi" Name="t" ManipulationMode = "TranslateX, TranslateY, Scale"
ManipulationDelta = "t_ManipulationDelta" >
<TextBlock.RenderTransform>
<CompositeTransform x:Name="t_Transform" />
</TextBlock.RenderTransform>
</TextBlock>
</Grid>
和c#
namespace Manipulation
{
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
}
private void t_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
this.t_Transform.TranslateX += e.Delta.Translation.X;
this.t_Transform.TranslateY += e.Delta.Translation.Y;
}
}
} 但是我不能限制区域。我尝试使用Canvas,但无法限制区域。