与图象和文本的按钮模板在wpf

时间:2010-04-28 05:15:54

标签: wpf templates binding custom-controls

我想在里面创建带有图片和文字的按钮。例如,我会为“浏览文件夹”和“导入”等按钮使用不同的图像和文本。 其中一个选择是使用模板。 我看了一下simliar问题

Creating an image+text button with a control template?

但有没有办法可以在不使用依赖属性或任何其他类的情况下绑定图像源?

由于

7 个答案:

答案 0 :(得分:41)

它不一定非常复杂。像将StackPanel放在按钮内一样简单就可以了:

<Button>
  <StackPanel>
    <TextBlock>My text here</TextBlock>
    <Image Source="some.jpg" Stretch="None" />
  </StackPanel>
</Button>

然后,您可以配置StackPanel来控制文本的显示位置,对齐等。

答案 1 :(得分:14)

我添加了一些东西来很好地排列它们

<Button>
   <StackPanel Orientation="Horizontal">
       <Image Source="/ApplicationName;component/Images/MyImage.ico"/>
       <Label Padding="0">My Button Text</Label>
   </StackPanel>
</Button>

答案 2 :(得分:7)

    <Button>
        <StackPanel Orientation="Horizontal">
            <Image Source="Resources/add.png" Stretch="None" />
            <TextBlock Margin="5,0,0,0">Add</TextBlock>
        </StackPanel>
    </Button>

答案 3 :(得分:4)

<Button x:Name="MyCoolButton"Width="200" Height="75">
<Grid >
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
    <Image Source="Pete-Brown-Silverlight-in-Action.png" Margin="5" Grid.Column="0" />
    <StackPanel Grid.Column="1" Margin="5">
        <TextBlock Text="Buy My Book!" FontWeight="Bold" />
        <TextBlock Text="Pete is writing THE Silverlight 4 book" TextWrapping="Wrap" />
    </StackPanel>
</Grid>

答案 4 :(得分:3)

没有。你会将Image.Source绑定到什么?你需要一个DependencyProperty。当然,您还可以定义一个包含两个属性的普通类:TextImageSourceUri,然后使用DataTemplate来渲染此类的实例,但这将是均匀的要编写更多代码,这有点“臭”。

您不想使用依赖项属性或自定义类的原因是什么?

答案 5 :(得分:1)

如果图片最初大于按钮大小,则将 Stretch =&#34; Uniform&#34; 添加到Sean的地址案例答案中(问题BrainSlugs83在他的评论中提到我碰到了)。有关MSDN的拉伸选项的更多详细信息。

<Button>
    <StackPanel Orientation="Horizontal">
        <Image Source="/ApplicationName;component/Images/MyImage.ico" Stretch="Uniform"/>
        <Label Padding="0">My Button Text</Label>
    </StackPanel>
</Button>

想在BrainSlugs83下添加这个作为对答案的评论,但由于缺乏积分而无法进行评论,并且拒绝编辑Sean的回答。

答案 6 :(得分:0)

对我来说,XCeed WPF工具包(免费软件)的IconButton可以解决问题。