C# 用户控制的Telerik覆盖流冒泡事件

C# 用户控制的Telerik覆盖流冒泡事件,c#,silverlight,mvvm,telerik,coverflow,C#,Silverlight,Mvvm,Telerik,Coverflow,我有一个telrik coverflow,其中的平铺类型为InfoPageView,一个用户控件。InfoPageView用户控件中有一个按钮,我希望从中在父级触发事件。 我在这篇文章中尝试了实现该解决方案: 但是我不能在家长课上看到孩子们的活动。有没有其他方法可以做到这一点 <telerikNavigation:RadCoverFlow x:Name="CoverFlow" Grid.Row="0" OffsetY="0" ItemsSource="{Binding Covers}" H

我有一个telrik coverflow,其中的平铺类型为InfoPageView,一个用户控件。InfoPageView用户控件中有一个按钮,我希望从中在父级触发事件。 我在这篇文章中尝试了实现该解决方案: 但是我不能在家长课上看到孩子们的活动。有没有其他方法可以做到这一点

<telerikNavigation:RadCoverFlow x:Name="CoverFlow" Grid.Row="0" OffsetY="0" ItemsSource="{Binding Covers}" HorizontalAlignment="Center"
                DistanceBetweenItems="75" DistanceFromSelectedItem="25"  IsReflectionEnabled="False" ItemScale="0.5"  Margin="0,0,0,0" Width="785" Height="486">
                <telerikNavigation:RadCoverFlow.ItemTemplate>
                    <DataTemplate>
                        <local:InfoPageView Name="Custinfopage" Width="390" Height="390" />
                    </DataTemplate>
                </telerikNavigation:RadCoverFlow.ItemTemplate>
            </telerikNavigation:RadCoverFlow>

如果您坚持让事件从您的内部视图中冒泡出来,您将需要依赖路由事件。该按钮会将LeftMouseButtonDown事件标记为已处理,这意味着您不能只使用直接的事件处理程序。不过,您可以做的是为已处理的事件设置一个侦听器

您需要验证事件是否源自所需的按钮,也许在该按钮上使用标记就足够了

public MyOuterPage()
{
    InitializeComponent();
    this.AddHandler(UIElement.MouseLeftButtonDownEvent, new System.Windows.Input.MouseButtonEventHandler(MyMouseLeftButtonDownEventHandler), true);
}

void MyMouseLeftButtonDownEventHandler(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
    var button = e.OriginalSource as Button;
    if (button.Tag == "MyButton")
    {
        // do something with the event here
    }
}

我无法通过codebehind.cs文件捕获主页上的InfoPage usercontrol。所以我在xaml中注入了事件:

<local:InfoPageView Name="Custinfopage" Width="390" Height="390" OnButtonClick="Button_click_event" />
在UserControl中:

public event EventHandler<RoutedEventArgs> OnButtonClick;

    public void Button_Click(object sender, RoutedEventArgs e)
            {

                if (OnButtonClick!= null){
                        OnButtonClick(sender, e);
                }

            }
公共事件事件处理程序OnButton单击;
公共作废按钮\单击(对象发送者,路由目标e)
{
如果(OnButtonClick!=null){
OnButtonClick(发送方,e);
}
}

您所说的“父级”是什么意思您想在RadCoverFlow控件中“触发事件”,还是在InfoPageView中?您的最终目标是什么?我想在RadCoverflow控件/或承载RadCoverflow[parent]的视图中捕获一个事件,问题是它是由InfoPageView中的一个按钮生成的。
public event EventHandler<RoutedEventArgs> OnButtonClick;

    public void Button_Click(object sender, RoutedEventArgs e)
            {

                if (OnButtonClick!= null){
                        OnButtonClick(sender, e);
                }

            }