簡體   English   中英

如何在方法中獲得“對象發送者”的孩子?

[英]How to get a child of an “object sender” in a method?

我的應用程序中有一個帶有15個邊框的圖像,它在MouseUp上調用一個方法..所有圖像都有不同的名稱..因此為什么我希望它們都調用這個方法

<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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM