【问题标题】:Passing in an Image.Source to a XAML style将 Image.Source 传递给 XAML 样式
【发布时间】:2015-03-10 02:22:00
【问题描述】:

我正在尝试实现一个按钮样式,该样式同时具有在使用样式时指定的图像和标题。

这是我的风格:

<Style x:Key="ButtonStyle" TargetType="Button">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Grid Margin="0,0,0,0" Background="#FF9E9FA3">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>
                    <Image Source="{TemplateBinding Tag}" Grid.Column="0"/>
                    <Label Content="{TemplateBinding Content}" Grid.Column="1" FontSize="15" VerticalAlignment="Center"/>
                </Grid>             
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

我是这样使用它的:

<Button Tag="edit.png" Content="Edit" Style="{StaticResource ButtonStyle}" Grid.Column="2" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<Button Tag="save.png" Content="Save" Style="{StaticResource ButtonStyle}" Grid.Column="3" HorizontalAlignment="Center" VerticalAlignment="Center"/>

内容按预期工作,两个按钮显示标签中的正确字词,但图像未显示。如果我直接在(无样式)中使用 ControlTemplate 并将 {TemplateBinding} 替换为图像文件名,图像就会出现。

显然我使用错误的标签或图像错误。

帮助?

【问题讨论】:

    标签: wpf xaml


    【解决方案1】:

    如果你替换它会起作用

    <Image Source="{TemplateBinding Tag}" />
    

    通过

    <Image Source="{Binding Tag, RelativeSource={RelativeSource TemplatedParent}}"/>
    

    因为从字符串到 ImageSource 的必要类型转换是自动执行的。

    【讨论】:

      猜你喜欢
      • 2015-10-22
      • 2018-07-20
      • 1970-01-01
      • 2019-04-30
      • 2012-01-23
      • 1970-01-01
      • 2019-07-25
      • 1970-01-01
      • 2019-01-24
      相关资源
      最近更新 更多