0

Stackoverflow には私のような同様の質問がありますが、XAML で変更する方法のみを説明しています。コードで変更する方法を知りたいです。

これは、Blend を使用して XAML で行う方法を示す画像です。

画像

フルサイズのリンク: https://snag.gy/4Skk4.jpg

基本的に、C# でボタンの押された状態の背景を変更したいのですが、インターネット上で例を見つけることができないようです。ボタンの画像が変更されることがあるため、ボタンの押された画像も変更する必要があるため、コードにする必要があります。

次のコードは、ボタンの画像を変更するだけのものであり、それはほんの始まりにすぎません。

image.ImageSource = new System.Windows.Media.Imaging.BitmapImage(new Uri(@"images/Button-warning-icon.png", UriKind.Relative));
image.Stretch = Stretch.Uniform;
buttonWarnings.Background = image;
4

3 に答える 3

1

私があなたを正しく理解していれば、「押された」視覚的状態で Button コントロールの外観を変更しようとしています。

私はそれを試すために開発用コンピューターの近くにいませんが、「ブロックを解除する」ために指示を出します。

まず、Blend のスクリーンショットで気づいたように、各視覚状態は で表され、Storyboardさまざまなプロパティがどのように変化するかを定義します。あなたの場合、Background プロパティを変更しようとしています。

およびそのVisualStateGroups状態は、コントロールによって定義されます。コントロールを再テンプレート化するときに、それらをオーバーライドできます。そこで、「テンプレートの編集」->「コピーの編集」で Blend を使用してボタン コントロールを再テンプレート化します。

次に、コードでは、次のことができるはずです。

1)視覚的な状態を取得します(コントロールを再テンプレート化しない限り、これは機能しません、AFAIK)

var visualStateGroups = VisualStateManager.GetVisualStateGroups(buttonWarnings);

2) visualStateGroups コレクションから「CommonStates」の VisualStateGroup を取得します。

var commonStatesGroup = visualStateGroups.Find((g) => ((VisualStateGroup)g).Name == "CommonStates") as VisualStateGroup;

3) 「押された」VisualState を取得します。

var pressedVisualState = commonStatesGroup.Find((vs) => ((VisualState)vs).Name == "Pressed") as VisualState;

4) その状態の絵コンテを変更する

pressedVisualState.Storyboard = newStoryboardWithCustomImageBackgroundProperty;

免責事項:私は今それを試すためにコンピューターの近くにいません-それはすべて理論上のものです)

于 2013-07-17T16:18:24.203 に答える
0

実例はネット上にたくさんあります!いくつか見てみましょう:

http://mobile.dzone.com/articles/windows-phone-buttonimage http://loekvandenouweland.com/index.php/2011/01/windows-phone-image-button/

于 2013-07-19T07:32:10.413 に答える