2016-12-21 10 views
0

私はWPFを使用します。私は境界線の中にグリッドを持っていますし、mouseEnterが起動されたときに私のグリッド(そうでない場合は見えない)の中にボタンを表示させたいと思います。WPF MouseEnterイベントでUIElementを変更する

私は、この枠線をe.GetPosition(myCanvas).XまたはYで再生して、すべてを移動することができます。

今私は私のグリッド内の私のボタンにアクセスしようとすると、私は立ち往生しようとします。私は私のMouseEnterイベントで

UIElement source = (UIElement)sender; 

しかし、私は、ソースを「解離」ことができない...何も子供のコレクションがありません。

これを行う方法はありますか?

答えて

1

BorderクラスにはChildrenプロパティを持っていませんが、それはあなたがグリッドにキャストできる子プロパティは、ボーダーの子供が実際にグリッドであることを提供している:あなたがある場合

Border border = (Border)sender; 
Grid grid = border.Child as Grid; 
if (grid != null) 
{ 
    Button button = grid.Children[0] as Button; 
    if(button != null) 
     button.Visibility = Visibility.Visible; 
} 

このコードは動作するはずですBorder要素のMouseEnterイベントを処理し、Border内部のGridにはButton要素が含まれています。あなたがGridのMouseEnter要素を扱っているならば、送信者引数をGridに直接キャストする必要があります。

0

フォームのDependencyPropertyを作成し、ボタンの表示プロパティをバインドすることができます。そして、境界線のMouseEnterとMouseLeaveで、DependencyPropertyを設定します。

+0

私はDependencyPropertiesについてanthingを知らなかったあなたに、リック、 ありがとうございます。私はそれを私のTodoリストの上に置いた – Xavier123456789

0

私はグリッド上でマウスセンターをやっているとは思わなかった。それは魅力のように働く。 私は今起きることができます。

Grid sourceG = (Grid)sender; 
sourceG.Children[0].Visibility = Visibility.Visible; 
関連する問題