0

ユーザーがボタンを押すたびに、ボタンの背景画像を変更したいのですが。ImageSourceを自分の写真に設定しました。マウスがボタンの上にあるとき、私のボタンは画像を表示しません。マウスがボタンの上にある場合でも画像が表示されるように画像を設定するにはどうすればよいですか?

        <Button x:Name="recordButton" Content="" HorizontalAlignment="Left" Height="50" Margin="60,45,0,0" VerticalAlignment="Top" Width="50" Click="recordButton_Click">
        <Button.Background>
            <ImageBrush ImageSource="play.png"/>
        </Button.Background>
    </Button>

そして別の質問。これらの2つの写真を変更するにはどうすればよいですか?それらの名前は「play.png」と「stop.png」で、どちらもリソースにあります。

        private bool recordStarted = false;

    private void recordButton_Click(object sender, RoutedEventArgs e)
    {
        recordStarted = !recordStarted;


        if(recordStarted)
        {
            ImageBrush brush1 = new ImageBrush();
            BitmapImage image = Properties.Resources.stop;
            brush1.ImageSource = image;
            recordButton.Background = brush1;

        }
    }

私はこれを試しましたが、VSはBitmapImage image = Properties.Resources.stop; ヘルプを見つけることができません。

4

2 に答える 2

1

背景を画像に設定するのではなく、コンテンツを画像に設定することをお勧めします

<Button x:Name="recordButton" HorizontalAlignment="Left" Height="50" Margin="60,45,0,0" VerticalAlignment="Top" Width="50" Click="recordButton_Click">
    <Image Source="play.png"/>
</Button>

画像を変更したい場合は、テキスト内でこれを行うことができます。リソースファイル内の画像ではなく、リソースとしてコンパイルされた画像を使用するのが最も簡単です。

(recordButton.Content as Image).Source = new BitmapImage(new Uri("Images/stop.png", UriKind.Relative));

リソースファイルを使用する場合は、このSO投稿を参照してください

于 2012-06-17T06:49:11.283 に答える
0

写真を変更する方法はいくつかあります。

  1. ボタンコントロールテンプレートを再定義し、VisualStateManagerを使用します。

  2. コントロールテンプレートを再定義し、トリガーを使用します。

  3. ボタンのコンテンツをそのプロパティにバインドしようとするMouseOver場合があります。マウスオーバーすると、ある画像を非表示にして別の画像を表示します。

于 2012-06-17T07:11:02.540 に答える