から派生したクラスにこのコードがありますUserControl
(ウィンドウから派生した場合と同じ動作)。コードは非常に単純なサンプル (問題を分離する) であり、マウスを使ってマウス ダウンとマウス アップの間だけでいくつかの行を移動したい (これらの行を直接参照することはできません) 唯一の方法は、それらを削除し、正しい位置に再度追加します。
protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
{
m_Grid.Children.Clear( );
m_Grid.Children.Add(new Button());
base.OnMouseLeftButtonDown(e);
}
protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e)
{
m_Grid.Children.Clear();
base.OnMouseLeftButtonUp(e);
}
Wherem_Grid
は次のように宣言されています。
private readonly Grid m_Grid;
この形式でOnMouseLeftButtonUp
は、呼び出されることはありません。私が削除した場合:
m_Grid.Children.Clear( );
m_Grid.Children.Add(new Button());
OnMouseLeftButtonUp
呼ばれます。
なぜなのかご存知ですか?