正在按类型获取XAML中的子元素

本文关键字:元素 XAML 获取 类型 | 更新日期: 2023-09-27 18:03:10

我有这样的xaml按钮:

      <Button Click="SyncToDeviceToggle_OnClick">
                            <Button.Template>
                                <ControlTemplate>
                                    <Image Source="Img/kin.png" Height="25"/>
                                </ControlTemplate>
                            </Button.Template>
                        </Button>

代码背后:

private void SyncToDeviceToggle_OnClick(object sender, RoutedEventArgs e)
{
    var image = ??//I want to get the child image element in the button without having to search for it by name specified in name="something"
}

在javascript中,我只会button.getElementsByTagName("image"([0];

正在按类型获取XAML中的子元素

您可以为图像控件分配一个名称,然后通过按钮的Template:的FindName方法访问它

<ControlTemplate>
    <Image x:Name="image" Source="Img/kin.png" Height="25"/>
</ControlTemplate>

private void Button_Click(object sender, RoutedEventArgs e)
{
    var control = (Control)sender;
    var image = control.Template.FindName("image", control) as Image;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
        Button button = sender as Button;
        DependencyObject child = VisualTreeHelper.GetChild(button, 0);
        Image image = child as Image;
        //Now you can access your image Properties
}
    <Button Click="SyncToDeviceToggle_OnClick" Margin="0,224,0,302">
            <Button.Background>
                <ImageBrush ImageSource="Img/kin.png" x:Name="MyBrush"/>
            </Button.Background>
        </Button>

如果以这种方式完成,您可以通过其在.cs文件中的直接名称直接访问MyBrush。