Как да потиснем децата да извикват събитие на родител?

Създавам прост потребителски comtol уеб браузър, базиран на докосване. Използвам събитие ManipulationDelta за панорамиране, увеличаване, намаляване и т.н. Браузърът (Awesomium WebControl) е поставен в решетка за управление. Когато се опитам да превъртя страницата, целият браузър се движи. Как да потисна извикването на събитие на родител от дете? Зададох тип потребителско въвеждане на ViewInput.Mouse, защото искам сам да се справям с докосването.

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:Name="_control" x:Class="WebControlTouch.WebBrowser" 
             mc:Ignorable="d" d:DesignWidth="497" Height="323.333">
    <Grid TouchDown="_mainGrid_TouchDown" x:Name="_mainGrid" Background="Honeydew" Grid.Row="0" Margin="0,0,-66,0">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="8*"/>
            <ColumnDefinition Width="466*"/>
            <ColumnDefinition Width="8*"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="84*"/>
            <RowDefinition Height="7*"/>
            <RowDefinition Height="220*"/>
            <RowDefinition Height="12*"/>
        </Grid.RowDefinitions>
        <awe:WebControl TouchDown="_browser_TouchDown"  Visibility="Visible" LoadingFrameFailed="_browser_LoadingFrameFailed" LoadingFrameComplete="_browser_LoadingFrameComplete" LoadingFrame="_browser_LoadingFrame" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"  Name="_browser" AddressChanged="_browser_AddressChanged" Width="Auto" Height="Auto"  Grid.Row="2" Grid.Column="1" Margin="0,0,1,0"/>
        <TextBox Grid.Row="0" HorizontalAlignment="Left" Name="_addressBar" Height="43" Margin="0,10,0,0" TextWrapping="Wrap" Text="Address" VerticalAlignment="Top" Width="146" Grid.ColumnSpan="2"/>
        <Button x:Name="_goButton" Grid.Row="0" TouchDown="Button_TouchDown" Content="Go!" HorizontalAlignment="Left" Margin="131,10,0,0" VerticalAlignment="Top" Width="132" RenderTransformOrigin="-0.164,0.514" Height="43" Click="Button_Click" Grid.Column="1"/>
        <Button TouchDown="Btn_back" x:Name="_btnBack" Content="Back" Click="Btn_back" HorizontalAlignment="Left" Margin="276,10,0,0" VerticalAlignment="Top" Width="75" Grid.Column="1" Height="20"/>
        <Button TouchDown="_btn_forward" x:Name="_btnForward" Content="Forward" HorizontalAlignment="Left" Margin="365,10,0,0" VerticalAlignment="Top" Width="75" Click="_btn_forward" Grid.Column="1" Height="20"/>
        <Label x:Name="_Status" Content="Ready" Margin="277,42,130,16" VerticalAlignment="Center" Grid.Column="1" Height="26"/>
        <Button x:Name="_exitButton" Content="Exit!" Grid.Column="1" HorizontalAlignment="Left" Margin="365,45,0,0" VerticalAlignment="Top" Width="75" TouchDown="_exitButton_TouchDown"/>
        <Button x:Name="_temp" Content="Scroll" Grid.Column="1" HorizontalAlignment="Left" Margin="459.312,10.04,0,0" VerticalAlignment="Top" Width="75" Click="_tempClick"/>

    </Grid>
</UserControl>

person Over Killer    schedule 11.08.2014    source източник


Отговори (1)


Това означава, че искате някои събития да спрат да изплуват (нагоре) в контролната йерархия. Всичко, което обикновено трябва да направите, е да маркирате събитието като обработено (екземплярът на събитието, който получавате във вашия манипулатор на събития):

e.Handled = true;

Във вашия случай трябва да е нещо като:

private void _browser_TouchDown(object sender, TouchEventArgs e)
{ 
    //...
    e.Handled = true;
    //...
}
person Marcel N.    schedule 11.08.2014
comment
Ти ми спасяваш задника! - person Over Killer; 11.08.2014