Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何得到一个孩子的“孩子”;“对象发送者”;用什么方法?_C#_Wpf - Fatal编程技术网

C# 如何得到一个孩子的“孩子”;“对象发送者”;用什么方法?

C# 如何得到一个孩子的“孩子”;“对象发送者”;用什么方法?,c#,wpf,C#,Wpf,在我调用MouseUp方法的应用程序中,我有一个15边框,里面有一个图像。。所有图像都有不同的名称。。因此,我希望他们都称这为一种方法 <GroupBox Width="75" Height="75"> <Border MouseLeftButtonUp="Image_MouseUp1" Background="Transparent"> <Image x:Name="RedPick5_Image" Height="Auto" Wi

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

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

如果图像是边框的唯一直接子级,则可以这样做:

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

您需要转换发件人并进行检查

    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
    }

或者,您可以使用


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

又是您!如果这行得通的话,我可以睡个安稳觉,明天在工作中度过美好的一天。你让我很高兴,如果你在这里,我会吻你。我要去打倒。。在接下来的9分钟内,我不会选择你作为正确答案。我会在早上给你评分。谢谢你,谢谢你。学习回答问题的不同方法非常有用question@user1189352我还没说完,我会补充更多的解释;)请做!我只关心学习。这个项目有很大的时间限制,所以不得不求助于stackoverflowI,我过去常常检查空值,但这真的是正确的做法吗?如果您的发件人不是您所期望的,则有人正在不应该呼叫的地方呼叫事件。Idk,只是想知道。@BrunoLM如果发送者必须始终是您期望的类型,那么您可以抛出FormatException
    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)(sender as Border).FindName("RedPick5_Image");