2013-05-02 81 views
0

我对WPF有点没有经验,并试图在WPF中获得一个简单的模板,用于带有图标图标的按钮以及工作的文本。将BitmapImage作为标签传递给DataTemplate

样式代码:

<Style x:Key="DatabaseButtonWithImageTag" TargetType="Button" BasedOn="{StaticResource DatabaseButton}"> 
    <Setter Property="ContentTemplate"> 
     <Setter.Value> 
      <DataTemplate> 
       <Grid> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="1*" /> 
         <ColumnDefinition Width="2*" /> 
        </Grid.ColumnDefinitions> 

        <Image Grid.Column="0" Width="100" Source="{TemplateBinding Tag}" /> 
        <ContentControl Grid.Column="1" Content="{TemplateBinding Content}" /> 
       </Grid> 
      </DataTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

查看代码:

 <Image Source="{StaticResource image_new_patient}"/> 
    <Button Style="{StaticResource DatabaseButtonWithImageTag}" Tag="{StaticResource image_new_patient}" Width="150" Height="100"> 
     Test! 
    </Button> 

的按钮显示之外的图像,所以是 “测试!”,但按钮内没有图像。

我在做什么错?

+0

[更改WPF按钮背景图像编程]的可能重复(http://stackoverflow.com/questions/15819796/change-wpf-button-背景图像编程) – 2013-05-02 21:48:13

回答

0

TemplateBinding在DataTemplate中不起作用。

您可以使用此workaroud:

<Window.Resources> 
    <BitmapImage x:Key="image_new_patient" UriSource="bsp.jpg" /> 
    <local:ImageConverter x:Key="imageConverter" /> 
    <Style x:Key="DatabaseButtonWithImageTag" TargetType="Button"> 
     <Setter Property="ContentTemplate"> 
      <Setter.Value> 
       <DataTemplate> 
        <Grid> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="1*" /> 
          <ColumnDefinition Width="2*" /> 
         </Grid.ColumnDefinitions> 

         <Image Grid.Column="0" Width="100" Source="{Binding RelativeSource={RelativeSource AncestorType=Button}, Path=Tag}" /> 

         <ContentControl Grid.Column="1" Content="{TemplateBinding Content}" /> 
        </Grid> 
       </DataTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

</Window.Resources> 
<StackPanel> 
    <Image Source="{StaticResource image_new_patient}" Width="50"/> 
    <Button Style="{StaticResource DatabaseButtonWithImageTag}" Tag="{StaticResource image_new_patient}" Width="150" Height="100"> 
     Test! 
    </Button> 

</StackPanel> 

+0

非常感谢,它的作品:) – Maverick 2013-05-03 11:46:31