WPF FrameworkElement Mouse Clickの問題
-
24-10-2019 - |
質問
WPFアプリには、グリッド内にカスタムコントロールがたくさんあります。マウスのクリックを処理するために、私は使用します MouseLeftButtonDown
グリッドのイベントとイベントハンドラーで、どのCustomControlがクリックされたかを確認します。
private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
FrameworkElement feSourceComm = e.Source as FrameworkElement;
MyCustomControl SCurrentComm = new MyCustomControl();
try
{
SCurrentComm = (MyCustomControl)feSourceComm;
}
catch (Exception)
{
...
問題は、すべてのカスタムコントロールをusercontrolに入れてからグリッド内に配置したときに現れました。この場合、アプローチは機能しません。
各ケースでクリックソースのタイプを確認しました e.Source.GetType().ToString();
そして、次の結果を取得します。
問題がない場合(usercontrolなしでカスタムコントロールをグリッドに入れた場合)
MyProjectNamespace.MyCustomControl
customControlsをusercontrolに入れてからグリッドに入れたとき
MyProjectNamespace.UserControls.MyUserControlName
customControlsをusercontrolに入れてからグリッドに入れて、usercontrolを外部ファイルからロードしたとき XamlReader.Load
System.Windows.Controls.UserControl
だから、私の質問:
CustomControlsを作成する方法として e.Source
彼らがusercontrolの中にいるとき?
解決
e.OriginalSource
クリックが発生した特定の要素を教えてくれます。それがあなたのカスタムコントロールではない場合は、 OriginalSource
カスタムコントロールを見つけるまで
所属していません StackOverflow