如何更改controltemplate中的图像源?

时间:2014-02-25 08:32:32

标签: c# wpf image

我的 MyResourceDictionary.xaml 文件中有模板

<ControlTemplate TargetType="{x:Type Button}" x:Key="ImageButtonTemplatepurpleSmall"  >
        <Grid>
            <Image Source="images\button_purple_up_76.jpg" Name="image"  />

        </Grid>
        <ControlTemplate.Triggers>
            <Trigger Property="IsMouseOver" Value="true">
                <Setter TargetName="image" Property="Source" Value="images\button_purple_hover_76.jpg" />
            </Trigger>
            <Trigger Property="IsPressed" Value="true">
                <Setter TargetName="image" Property="Source" Value="images\button_purple_depressed_76.jpg" />
            </Trigger>
        </ControlTemplate.Triggers>
    </ControlTemplate>

现在将图像应用于按钮 我只想像这样在网格内更改此图像的图像源 这就是我试过的

Image RecTangleObj = (Image)btnBack.Template.FindName("image", btnBack);

但有些如何总是返回null值如何更改这个的图像源? 的更新

public override void OnApplyTemplate()
        {
            //base.OnApplyTemplate();
            //Image RecTangleObj = (Image)btnBack.Template.FindName("image", btnBack);
            //if (RecTangleObj != null)
            //{ 

            //}
        }

1 个答案:

答案 0 :(得分:2)

当在屏幕上没有呈现子内容时,将调用窗口的OnApplyTemplate。

将此代码放在Loaded事件中,它会正常工作。