如何在控制模板中获取图像源

时间:2011-08-25 07:54:30

标签: silverlight controltemplate

我添加了一个这样的按钮:

<Button x:Name="myButton" 
            Style="{StaticResource myButtonStyle}" 
            Height="36" 
            VerticalAlignment="Top"
            Click="myButton_Click">

        <Grid>
            <Image Height="*" Width="31" Source="{Binding Path=Image}" />
            <TextBlock Text="{Binding Path=DisplayName}" HorizontalAlignment="Center" />
        </Grid>
</Button>

其中'Image'是字符串中所需图像的来源。风格如下:

<Style x:Key="myButtonStyle"
     TargetType="Button">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">

                        <Border x:Name="myButtonRootBorder">

                                <StackPanel Orientation="Horizontal">
                                    <Image Source="{??}" Width="{??}" Height="{??}" />
                                    <!--ContentPresenter-->
                                    <ContentPresenter Grid.Column="1"
                                                    HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                                    VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                                    Content="{TemplateBinding Content}" />
                                </StackPanel
                        </Border>
                    </Grid>
                </ControlTemplate> 
            </Setter.Value>
        </Setter>
    </Style>

现在如何在控件模板中设置图像的高度,宽度和来源。

请帮忙。提前谢谢。

1 个答案:

答案 0 :(得分:3)

对于宽度和高度,您可以使用{TemplateBinding Width}{TemplateBinding Height}。如果您希望图像可自定义,则应继承按钮类并添加imagesource属性:

public class ImageButton : Button {
        public ImageSource ImageSource
        {
            get { return (ImageSource)GetValue(ImageSourceProperty); }
            set { SetValue(ImageSourceProperty, value); }
        }

        // Using a DependencyProperty as the backing store for ImageSource.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty ImageSourceProperty =
            DependencyProperty.Register("ImageSource", typeof(ImageSource), typeof(ImageButton), new UIPropertyMetadata(null));
}

然后您可以使用{TemplateBinding ImageSource}作为图片。