我正在创建基于 Awesonium 的多点触控浏览器。为此,我使用 Awesomium Web 控件 和一些其他控件创建了新的用户控件。我设置了这个属性:IsManipulationEnabled="True"
关于本文with is here ,我已经重写了这个函数:
protected override void OnManipulationDelta(ManipulationDeltaEventArgs e)
{
UIElement element = e.Source as UIElement;
MatrixTransform xform =
element.RenderTransform as MatrixTransform;
Matrix matrix = xform.Matrix;
ManipulationDelta delta = e.DeltaManipulation;
Point center = e.ManipulationOrigin;
matrix.ScaleAt(
delta.Scale.X, delta.Scale.Y, center.X, center.Y);
matrix.RotateAt(
delta.Rotation, center.X, center.Y);
matrix.Translate(
delta.Translation.X, delta.Translation.Y);
xform.Matrix = matrix;
e.Handled = true;
base.OnManipulationDelta(e);
}
但操作不适用于 Ui 元素。用户控件XAML代码:
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:awe="http://schemas.awesomium.com/winfx" x:Class="WebControlTouch.WebBrowser"
mc:Ignorable="d"
d:DesignHeight="600" d:DesignWidth="800">
<Grid>
<awe:WebControl HorizontalAlignment="Left" Margin="0,58,0,0" VerticalAlignment="Top" Width="790" Name="_browser" AddressChanged="_browser_AddressChanged"/>
<TextBox HorizontalAlignment="Left" Name="_addressBar" Height="43" Margin="0,10,0,0" TextWrapping="Wrap" Text="Address" VerticalAlignment="Top" Width="335"/>
<Button Content="Go!" HorizontalAlignment="Left" Margin="340,10,0,0" VerticalAlignment="Top" Width="133" RenderTransformOrigin="-0.164,0.514" Height="43" Click="Button_Click"/>
</Grid>
我应该怎么做才能使操作起作用?
最佳答案
我不知道你是否解决了这个问题,但是在你的用户控件中你没有设置下面的代码
IsManipulationEnabled="True"
。
我不知道你在哪里设置这个属性,但你需要在 UserControl 标签中设置它
关于c# - 默认情况下,WPF 自定义用户控件是否已启用多点触控操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25015290/