2014-05-09 1 views
1

저는 검색 창과 검색 창으로 사용자 컨트롤을 가지고 있는데, 창에 표시하고 있습니다. 버튼을 클릭하면 이벤트가 윈도우의 코드에서 처리 할 수있는 윈도우로 버블 링됩니다. 나는 뒤에 사용자 컨트롤 코드에서 버튼 클릭 코드를 넣고 싶지 않습니다. 어떻게해야합니까?사용자 정의 컨트롤에서 이벤트가 포함 된 창 위로 이벤트를 버블 링하는 방법은 무엇입니까?

창에 대한 XAML은 다음과 같습니다 : 사용자가 들어 나는 Click 이벤트

private void Button_Click(object sender, RoutedEventArgs e) 
    { 
     RaiseEvent(e); 
    } 

을 위해 그리고 창에이 코드를 가지고있는 UserControl을위한 뒤에있는 코드에서

<dx:DXWindow 
x:Class="Client.Support.AskAQuestionDialog" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core" 
xmlns:libRes="clr-namespace:Shared.Lib.Resources;assembly=Shared.Lib" 
xmlns:support="clr-namespace:Client.Support" 
xmlns:gui="clr-namespace:Client.GUI;assembly=Client.GUI" 
Title="{x:Static libRes:Strings.AskAQuestion}" Loaded="DXWindow_Loaded" 
Height="150" Width="700"> 

<Grid> 
    <Viewbox> 
     <support:ZenForumSearchBar VerticalAlignment="Center" HorizontalAlignment="Center"/> 
    </Viewbox> 
</Grid> 
</dx:DXWindow> 

컨트롤이 같은 이벤트를 처리하는 처리기를 만들려고

private void ButtonHandler(object sender, RoutedEventArgs e) 
    { 
     FrameworkElement fe = e.Source as FrameworkElement; 
     switch (fe.Name) 
     { 
      case "_knowledgeBaseSearchButton": 
       break; 
     } 
     e.Handled = true; 
    } 

나는 생각합니다. 모든 것을 완전히 잘못하고있다. UserControl에서 발생하는 이벤트를 인스턴스화 된 Window에 버블 링하는 방법은 무엇입니까?

답변

1

Button.Click은 이미 버블 링 이벤트이므로 UserControl에는 Button_Click이 필요하지 않습니다. Window, Grid 또는

<Grid Button.Click="ButtonHandler"> 

와 핸들러 ViewBox 대신 e.Source

var fe = e.OriginalSource as FrameworkElement; 

e.OriginalSource을 확인하고

작동합니다 당신이해야 할 모든 당신의 핸들러를 첨부입니다
관련 문제