如何在Setter中更改WPF按钮图像

时间:2013-09-05 17:33:03

标签: c# wpf xaml wpf-controls controltemplate

我在尝试更改WPF(c#)中按钮的controltemplate时遇到了一个非常奇怪的问题。

我现在有以下代码:

    <Window.Resources>
    <Style x:Key="ButtonFocusVisual">
        <Setter Property="Control.Template">
            <Setter.Value>
                <ControlTemplate>
                    <Rectangle Margin="2" SnapsToDevicePixels="true" Stroke="Black" StrokeThickness="1" StrokeDashArray="1 2"/>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
    <Style x:Key="MacOSX-Close" TargetType="{x:Type Button}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Border Background="Black" BorderThickness="0">
                    <Image x:Name="bgimg" Source="bin/debug/Ressources/Images/GUI/frame-btn-defaulted.png"/>
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsEnabled" Value="false">
                            <Setter Property="Foreground" Value="#ADADAD"/>
                        </Trigger>
                        <Trigger Property="IsPressed" Value="true">
                            <Setter TargetName="bgimg" Property="Source" Value="bin/debug/Ressources/Images/GUI/frame-btn-defaulted.png"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Window.Resources>

所以这不起作用。它说

    "{DependencyProperty.UnsetValue}" is no valid value for property "System.Windows.Controls.Image.Source" on a setter.

当我尝试在网格中使用多个图像(因为你只能设置一个孩子)并修改了“visibility”属性时,按钮根本没有出现!没有按钮,没有图像。而且,是的,我确信图像存在。 但是源是相对于解决方案根,而不是编译程序...这有关系吗?请帮助我:)我在这里开始有点绝望...... :(

最好的问候;) 请问是否有些事情不清楚。

1 个答案:

答案 0 :(得分:0)

在项目中创建像资源一样的文件夹,并将图像放在资源文件夹中,并将其构建操作设置为资源。然后你可以设置Source =“/ Resources / frame-btn-defaulted.png”