0

我正在尝试获取与鼠标单击的 ImageButton 关联的类数据;其中 ImageButton 位于 Scollviewer 包装的 WrapPanel 中,并填充了许多其他 ImageButton。问题是,虽然我可以看到 ImageButton 的实例选择了“((PlanetClass)(fe))”,并且可以看到类实例的基础数据“((PlanetClass)(fe)).Content”,但我无法访问任何类的字段数据。下面的例子说明了我的意图。

我是否正确地解决了这个问题(WrapPanel(包装在 ScrollViewer 中)-> ImageButton-> FrameworkElement -> 按钮实例 -> 字段数据)?如果不是,那么访问 ImageButton 实例和实例的关联数据的最佳方法是什么?谁能指出我正确的方向?

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

1 回答 1

0

两天后,非常沮丧:

在这个问题上摸索了两天之后,我发现要获取鼠标单击的 ImageButton 下方的基础数据,我需要将 FrameworkElement e.OriginalSource 转换回原始 ImageButton 以获取它的“.source”,并且然后将结果转换为 PlanetClass 以获取它的属性。

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

账单

于 2010-04-06T19:29:03.397 回答