0

WPF (c#) でボタンのコントロール テンプレートを変更しようとすると、非常に奇妙な問題が発生します。

私は今、次のコードを持っています:

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

そして、グリッドで複数の画像を使用しようとして(子は1つしか設定できないため)、「可視性」プロパティを変更したところ、ボタンがまったく表示されませんでした!!! ボタンも画像もありません。そして、はい、私はイメージが存在すると確信しています。しかし、ソースはコンパイルされたプログラムではなく、ソリューションのルートに関連しています...これは問題ですか? 私を助けてください:)私はここで少し必死になっています... :(

よろしくお願いします ;) 何か不明な点があればお尋ねください。

4

1 に答える 1

0

プロジェクトに Resources などのフォルダーを作成し、画像を resources フォルダーに配置し、そのビルド アクションを Resource に設定する必要があります。次に、Source = "/Resources/frame-btn-defaulted.png" を設定できます。

于 2013-09-05T17:41:41.183 に答える