Frage

Ich versuche, Klasse-Daten mit einer Maus geklickt Image assoziiert zu erhalten; die Image befindet sich in einem Scollviewer WrapPanel gewickelt und gefüllt mit zahlreichen anderen ImageButtons. Das Problem ist, dass, obwohl ich die Instanz der Image ausgewählt sehen können „((PlanetClass) (fe))“ und haben die Sichtbarkeit der zugrunde liegenden Daten der Klasseninstanz „((PlanetClass) (fe)). Inhalt“, vermag ich nicht um Zugriff auf eine der Felddaten der Klasse. Das folgende Beispiel zeigt meine Absicht.

Bin ich dieses Problem richtig nähern (WrapPanel (in Scroll verpackt) -> ImageButton-> Framework -> Instanz der Button -> Felddaten)? Wenn nicht, was wäre der beste Weg, um die Image Instanz und die Instanz zugehörige Daten zugreifen? Kann jemand bitte mich in die richtige Richtung?

// WPF EventHandler at the container level:
<ScrollViewer ButtonBase.Click="SolarSystem_Click">

// Handles the ImageButton mouseClick event within the ScrollViewer wrapping the WrapPanel. 
private void SolarSystem_Click(Object sender, RoutedEventArgs e) 
{ 
    FrameworkElement fe = e.OriginalSource as FrameworkElement; 
    SelectedPlanet PlanetSelected = new SelectedPlanet(fe); 
    MessageBox.Show(PlanetSelected.PlanetName); 
} 

// Used to initiate instance of ImageButton to access field data. 
public SelectedPlanet(FrameworkElement fe) 
{ 
    return ((PlanetClass)(fe)); 
} 

// Class Data 
public class PlanetClass 
{ 
    string planetName; 

    public PlanetClass(string planetName) 
    { 
        PlanetName = planetName; 
    } 

    public string PlanetName 
    { 
        set { planetName = value; } 
        get { return planetName; } 
    } 
} 
War es hilfreich?

Lösung


zwei Tage später und eine Menge Frustration:

Nach dem Kratzen meines Kopfes für zwei Tage zu diesem Thema, habe ich herausgefunden, dass die zugrunde liegenden Daten unter einer Maus geklickt Image I zu erhalten, notwendig, um die Framework e.OriginalSource wieder auf das ursprüngliche Image zu werfen, um es der“.source zu bekommen “und warf dann das Ergebnis zu PlanetClass zu seinen Eigenschaften zu erhalten.

// WPF EventHandler placed at the container level.
<ScrollViewer ButtonBase.Click="SolarSystemButton_Click">

// Handles the ImageButton mouseClick event within the ScrollViewer wrapping the WrapPanel. 
 private void SolarSystemButton_Click(Object sender, RoutedEventArgs e)  
     { 
         FrameworkElement fe = e.OriginalSource as FrameworkElement;  
         string PlanetName = ((PlanetClass)((ImageButton)fe).Content).PlanetName;
         return PlanetName;
     }

Bill

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top