0

我在 WPF 方面有点缺乏经验,并试图在 WPF 中为一个带有图像图标的按钮以及要工作的文本获取一个简单的模板。

款式代码:

<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>

显示按钮外部的图像,“测试!”也是如此,但按钮内部没有图像。

我究竟做错了什么?

4

1 回答 1

0

TemplateBinding 在 DataTemplate 中不起作用。

您可以使用此解决方法:

 <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>

于 2013-05-03T09:16:10.163 回答