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

Arc*_*hie 12 wpf binding templates custom-controls

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

使用控件模板创建图像+文本按钮?

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

谢谢

Mar*_*hal 44

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

<Button>
  <StackPanel>
    <TextBlock>My text here</TextBlock>
    <Image Source="some.jpg" Stretch="None" />
  </StackPanel>
</Button>
Run Code Online (Sandbox Code Playgroud)

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


小智 15

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

<Button>
   <StackPanel Orientation="Horizontal">
       <Image Source="/ApplicationName;component/Images/MyImage.ico"/>
       <Label Padding="0">My Button Text</Label>
   </StackPanel>
</Button>
Run Code Online (Sandbox Code Playgroud)


mpe*_*pen 7

    <Button>
        <StackPanel Orientation="Horizontal">
            <Image Source="Resources/add.png" Stretch="None" />
            <TextBlock Margin="5,0,0,0">Add</TextBlock>
        </StackPanel>
    </Button>
Run Code Online (Sandbox Code Playgroud)


小智 5

<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>
Run Code Online (Sandbox Code Playgroud)


geh*_*hho 3

不。您会将其绑定Image.Source到什么?为此,您需要一个 DependencyProperty。当然,您也可以定义一个包含两个属性的普通类:TextImageSourceUri,然后使用 DataTemplate 来呈现该类的实例,但这会编写更多代码,而且有点“臭”。

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