I love WPF

"jamais sans son interface"

I love WPF

"jamais sans son interface"

Override System.Windows.Interactivity.EventTrigger

for capturing message for example

public class EventTrigger : System.Windows.Interactivity.EventTrigger
{
    #region CaptureEvent (DP SHORT)
    public bool CaptureEvent { get { return (bool)GetValue(CaptureEventProperty); } set { SetValue(CaptureEventProperty, value); } }
    public static readonly DependencyProperty CaptureEventProperty = DependencyProperty.Register("CaptureEvent", typeof(bool), typeof(EventTrigger), new PropertyMetadata(false));
    #endregion 

    protected override void OnEvent(EventArgs eventArgs)
    {
        if (eventArgs is RoutedEventArgs)
        {
            (eventArgs as RoutedEventArgs).Handled = CaptureEvent;
        }
        base.OnEvent(eventArgs);
    }
}

if you have a rectangle in dockpanel and you want to capturing MouseEvent, on clicking on rectangle the event if is not captured is transmited to Panel …

  <DockPanel Background="Red"
                   LastChildFill="False"
                   Margin="0,10,10.4,10.4"
                   HorizontalAlignment="Right"
                   Width="186"
                   Grid.RowSpan="2">
            <Rectangle Fill="Green"
                       DockPanel.Dock="Top"
                       Height="50">
                <interactivity:Interaction.Triggers>
                    <local:EventTrigger EventName="MouseDown"
                                                CaptureEvent="True">
                        <interactivity:InvokeCommandAction Command="{Binding ClickCommand, ElementName=win}"
                                                           CommandParameter="{x:Null}" />
                    </local:EventTriggerExtended>
                </interactivity:Interaction.Triggers>
            </Rectangle>
            <interactivity:Interaction.Triggers>
                <local:EventTrigger EventName="MouseDown">
                    <interactivity:InvokeCommandAction Command="{Binding Click2Command, ElementName=win}"
                                                       CommandParameter="{x:Null}" />
                </local:EventTriggerExtended>
            </interactivity:Interaction.Triggers>
        </DockPanel>

white this extend you can capture event on rectangle for not transmiting to parent … (available only for bubble strategy routed event)

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Retour en haut