2016-12-21 1 views
0

Ich verwende WPF. Ich habe ein Gitter innerhalb eines Rahmens und ich möchte einen Knopf in meinem Gitter (sonst unsichtbar) zeigen lassen, wenn ein mousEnter ausgelöst wird.WPF Ändern eines UIElement auf einem MouseEnter-Ereignis

Ich bin in der Lage, diesen Rand zu ziehen mit e.GetPosition (myCanvas) .X oder Y zu spielen, um das Ding in einem alles zu bewegen.

Jetzt versuche ich auf meine Schaltfläche in meinem Grid zuzugreifen, damit es angezeigt wird und ich feststecke.

In meinem MouseEnter- Veranstaltung, die ich tun:

UIElement source = (UIElement)sender; 

Aber ich kann „distanzieren“, um die Quelle nicht ... es gibt keine Kinder Sammlung.

Gibt es eine Möglichkeit, es zu tun?

Antwort

1

Die Border-Klasse hat keine Kinder Eigenschaft, aber es hat ein Kind Eigenschaft, die Sie ein Gitter werfen können, dass das Kind von der Grenze tatsächlich ein Gitter ist:

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; 
} 

Dieser Code sollte funktionieren, wenn Sie sind Behandeln des MouseEnter-Ereignisses für das Border-Element und des Grids innerhalb des Borders enthält ein Button-Element. Wenn Sie das MouseEnter-Element des Grids behandeln, sollten Sie das Argument des Arguments natürlich direkt an ein Grid übergeben.

0

Möglicherweise möchten Sie eine DependencyProperty für das Formular erstellen, an die Sie die Sichtbarkeitseigenschaft der Schaltfläche anbinden können. Und dann in den MouseEnter und MouseLeave des Rahmens, und legen Sie die DependencyProperty fest.

+0

Danke Rick, ich nicht anthing über DependencyProperties wusste. Ich lege das ganz oben auf meine Todo-Liste – Xavier123456789

0

Ich dachte nicht daran, Mouseenter auf dem Raster zu tun. Es funktioniert wie Charme. Ich kann jetzt weitermachen.

Grid sourceG = (Grid)sender; 
sourceG.Children[0].Visibility = Visibility.Visible; 
Verwandte Themen