是否有办法使用ManipulationDeltaHandler操作的元素只有在用户点击或触摸该特定元素时才会被操作?
到目前为止,我有以下代码:
public void AddTextButton_Click(object sender, RoutedEventArgs e)
{
TextBox MyTextBox = new TextBox();
MyTextBox.Background = new SolidColorBrush(Colors.White);
MyTextBox.PlaceholderText = "Text";
MyTextBox.Width = 250;
MyTextBox.Height = 100;
ManipulationMode = ManipulationModes.All;
MyTextBox.RenderTransform = textBoxTransforms;
AddHandler(ManipulationDeltaEvent, new ManipulationDeltaEventHandler(TextBox_ManipulationDelta), true);
parentCanvas.Children.Add(MyTextBox);
}
void TextBox_ManipulationDelta(object sender,
ManipulationDeltaRoutedEventArgs e)
{
dragTextBox.X += e.Delta.Translation.X;
dragTextBox.Y += e.Delta.Translation.Y;
resizeTextBox.ScaleX *= e.Delta.Scale;
resizeTextBox.ScaleY *= e.Delta.Scale;
}
当触摸/捏住画布上的任何位置时,文本框将移动/调整大小。我希望它只有当用户直接触摸文本框的边界时才会发生这种情况。有什么建议吗?
谢谢!
答案 0 :(得分:0)
当触摸/捏住画布上的任何位置时,文本框将移动/调整大小。
如果您未指定使用UIElment
属性和AddHandler方法设置的ManipulationMode
,则它们将对当前整页生效。
如果您只希望它们对TextBox
产生影响,则应按如下方式指定:
MyTextBox.ManipulationMode = ManipulationModes.All;
MyTextBox.AddHandler(ManipulationDeltaEvent, new ManipulationDeltaEventHandler(TextBox_ManipulationDelta), true);
请注意,还应指定ManipulationMode
,否则Manipulation
的{{1}}将无效。