0

カスタムボタンとして機能するを持ってUserControlいますが、ルーティングされたクリックイベントの周りの名前空間を変更したため、機能しなくなりました。基本的に、私の名前空間は次のようになります。

UI
UI.Controls
UI.Pages

UI.Controls.CustomButtonルーティングされたクリックイベントが次のように実装されているがあります。

public static readonly RoutedEvent ClickEvent = EventManager.RegisterRoutedEvent(
     "Click", 
     RoutingStrategy.Bubble, 
     typeof(RoutedEventHandler), 
     typeof(CustomButton));

public event RoutedEventHandler Click
{
     add { AddHandler(ClickEvent, value); }
     remove { RemoveHandler(ClickEvent, value); }
}

private void Border_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
     Border_MouseEnter(sender, e);
     RaiseClickEvent();
}

private void RaiseClickEvent()
{
     RoutedEventArgs newEventArgs = new RoutedEventArgs(Button.ClickEvent);
     RaiseEvent(newEventArgs);
}

そして、私はそのUI.Pages.SomePageようなものの中からそれを使おうとしています:

XAML

<controls:CustomButton Text="New..." Click="NewButton_Click"/>

C#

public void NewButton_Click(object sender, RoutedEventArgs e)
{
    //do something here
}

アプリケーションをデバッグすると、RaiseEvent内部UI.Controls.CustomButtonがヒットしていることがわかりますが、NewButton_Click内部UI.Pages.SomePageが呼び出されることはありません。

これは、すべてが同じ名前空間にあるときに機能していました...明らかな何かが欠けていますか?ありがとう!

4

1 に答える 1

8
RoutedEventArgs newEventArgs = new RoutedEventArgs(Button.ClickEvent);

する必要があります:

RoutedEventArgs newEventArgs = new RoutedEventArgs(CustomButton.ClickEvent);
于 2012-08-14T15:23:39.590 に答える