如何获得一个“;对象发送器”;在一种方法中

本文关键字:一种 方法 对象 何获得 一个 | 更新日期: 2024-10-23 16:00:06

在调用MouseUp方法的应用程序中,我有一个15个边框,里面有一个图像。。所有图像都有不同的名称。。因此,我希望他们都把这个方法称为

<GroupBox Width="75" Height="75">
      <Border MouseLeftButtonUp="Image_MouseUp1" Background="Transparent">
           <Image x:Name="RedPick5_Image" Height="Auto" Width="Auto"/>
      </Border>
</GroupBox>

我希望他们所有人都能设置孩子的图像源(如果我理解正确,图像就是边界的孩子)。我该怎么做?

        private void Image_MouseUp1(object sender, MouseButtonEventArgs e)
        {
            //want to set any image that calls this
            //something like Sender.Child.Source = ...
        }

如何获得一个“;对象发送器”;在一种方法中

您需要转换发件人并检查

    private void Image_MouseUp1(object sender, MouseButtonEventArgs e)
    {
        var border = sender as Border; // Cast to Border
        if (border != null)            // Check if the cast was right
        {
            var img = border.Child as Image;  // Cast to Image
            if (img != null)                  // Check if the cast was right
            {
                // your code
            }
            // else your Child isn't an Image her you could hast it to an other type
        }
        // else your Sender isn't an Border
    }

你也可以做这个

    private void Image_MouseUp1(object sender, MouseButtonEventArgs e)
    {
        var border = sender as Border;
        if (border == null) // if the cast to Border failed
            return;         
        var img = border.Child as Image;
        if (img == null) // if the cast to Image failed
            return;
        // your code
    }

如果图像只是边界的直接子级,则可以这样做:

Image image = (Image)((Border)sender).Child;
image.Source = // Set image source here.

您也可以使用FindName

(Image)(sender as Border).FindName("RedPick5_Image");

它将递归地搜索Border的子级,以查找名为"RedPick5_Image"的元素。如果找不到具有指定名称的元素,则可能返回null。