SilverLight自定义ImageButton

SilverLight中XAML的写法和WPF一样,但是发现在自定义按钮上,没有WPF来的容易,下面说说我制作SilverLight中的ImageButton的一些思路。

在SilverLight中,我们可以利用Button的Content属性来承载多个元素。然后通过stackPanel来包容图片和文本:

       <Button x:Name="AddUserButton" Width="150" Margin="32,140,0,0" Height="38" VerticalAlignment="Top" HorizontalAlignment="Left" d:LayoutOverrides="Width">
            <Button.Content>
                <StackPanel Orientation="Horizontal">
                    <Image Source="Images/eqrth.png" Width="16" Height="16" />
                    <TextBlock Text="Add User" Margin="10,0,0,0" />
                </StackPanel>
            </Button.Content>
        </Button>
        <Button x:Name="EditUserButton" Width="150" Margin="32,82,0,0" Height="38" VerticalAlignment="Top" HorizontalAlignment="Left" d:LayoutOverrides="Width">
            <Button.Content>
                <StackPanel Orientation="Horizontal">
                <Image Source="Images/eqrth.png" Width="16" Height="16" />
                <TextBlock Text="Edit User" Margin="10,0,0,0" />
                </StackPanel>
            </Button.Content>
        </Button>
        <Button x:Name="DeleteUserButton" Width="150" Margin="32,26,0,0" Height="38" VerticalAlignment="Top" HorizontalAlignment="Left" d:LayoutOverrides="Width">
            <Button.Content>
                <StackPanel Orientation="Horizontal">
                    <Image Source="Images/eqrth.png" Width="16" Height="16" />
                    <TextBlock Text="Delete User" Margin="10,0,0,0" />
                </StackPanel>
            </Button.Content>
        </Button>

这样,我们就能够得到想要的效果,图片可以通过重设Image的Source属性来变换。

但是如果我们项目中很多地方用到了这个配置文件的话,那么我们最好把它放到资源文件中,然后引用即可:

首先,创建一个ResourceDictionary页面。

然后,将样式写入进去:

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <!-- 应该在此定义资源字典条目。-->
    
    <Style x:Key="AddButtonStyle" TargetType="Button">
        <Setter Property="Width" Value="150" />
        <Setter Property="Margin" Value="0,0,0,10" />
        <Setter Property="ContentTemplate">
        <Setter.Value>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <Image Source="Images/eqrth.png" Width="16" Height="16" />
                    <ContentPresenter Content="{Binding}" Margin="10,0,0,0" />
                </StackPanel>
            </DataTemplate>
        </Setter.Value>
        </Setter>
    </Style>

    <Style x:Key="DeleteButtonStyle" TargetType="Button">
        <Setter Property="Width" Value="150" />
        <Setter Property="Margin" Value="0,0,0,10" />
        <Setter Property="ContentTemplate">
        <Setter.Value>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <Image Source="Images/eqrth.png" Width="16" Height="16" />
                    <ContentPresenter Content="{Binding}" Margin="10,0,0,0" />
                </StackPanel>
            </DataTemplate>
        </Setter.Value>
        </Setter>
    </Style>
    
    <Style x:Key="EditButtonStyle" TargetType="Button">
        <Setter Property="Width" Value="150" />
        <Setter Property="Margin" Value="0,0,0,10" />
        <Setter Property="ContentTemplate">
        <Setter.Value>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <Image Source="Images/eqrth.png" Width="16" Height="16" />
                    <ContentPresenter Content="{Binding}" Margin="10,0,0,0" />
                </StackPanel>
            </DataTemplate>
        </Setter.Value>
        </Setter>
    </Style>
    
</ResourceDictionary>

这里需要注意的是,每一个Style必须分配X:key属性,并且属性ID唯一。

最后,在前端页面,我们可以这样使用:

先引入样式资源:

<UserControl.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="ResourceDictionary1.xaml"></ResourceDictionary>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </UserControl.Resources>

然后Apply上样式即可:

 

    <Button HorizontalAlignment="Left" Margin="32,0,0,160"
         VerticalAlignment="Bottom" 
         Width="152" 
         Content="添加用户信息"
         Style="{StaticResource AddButtonStyle}" Height="40" RenderTransformOrigin="-2,0.2"
         />
        

转载于:https://www.cnblogs.com/scy251147/p/3454797.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值