質問

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 カスタムコントロールを見つけるまで

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top