簡體   English   中英

WP7單擊時如何更改按鈕的圖像

[英]WP7 How do I change the image of a button when clicked

現在,我有一個由六個按鈕組成的網格,每個按鈕內部都有不同的圖像。 我還有另外六個圖像集,它們是原始圖像,只是帶有灰色調,代表您選擇了它。 選擇按鈕后,如何將按鈕的圖像更改為新的“所選圖像”。

我假設您在方法中這樣做:

private void button1_click(object sender, RoutedEventArgs e)
{

}

我在弄清楚要放在這里的東西時遇到了麻煩。 通常我會認為它會是這樣的:

button1.image = "image path";

但是,在制作WP7應用程序時,不能使用image關鍵字。 關於如何在單擊時更改按鈕圖像的任何建議?

寫下您要更改圖像的位置

var brush = new ImageBrush();
brush.ImageSource = new BitmapImage(new Uri("/Images/YourImage.png", 
                                            UriKind.Relative));
btn.Background = brush;

在Silverlight(基於Windows Phone 7框架構建的Silverlight)中, Button控件沒有Image屬性。 我假設您已經通過將Image元素作為Button的子元素來創建了原始按鈕。 假設您希望整個按鈕組具有相同的行為,那么使用可視狀態可能是有意義的。 您可以通過更改ContentPresenter的不透明度來實現一致的外觀,例如,“正常”狀態的Opacity為0.75,“選定”狀態的Opacity為1.0。

確定哪個按鈕是選定按鈕比較棘手,但是如果將按鈕包裝在ListBox則可以使用ItemContainerStyle的“ Selected”可視狀態。

如果您想繼續使用已經采用的方法,那么假設您知道按鈕的內容是Image ,則可以執行以下操作:

private void button1_click(object sender, RoutedEventArgs e)
{
    Button source = (Button)sender;
    Image content = source.Content as Image;
    if (null != content)
    {
        content.Source = new BitmapImage(new Uri("image path"));
    }
}

當然,在這種方法中,您還需要處理將其他按鈕還原到其“正常”狀態,而ListBox方法將為您處理這些狀態。

您正在做的是一個非常好的學習練習-通過這樣的實驗,您將學到很多有關Silverlight的知識。

除了可以手動調整圖像以使其與按鈕按下狀態相匹配之外,我相信您還可以實現所需的效果-按下按鈕時按鈕圖像變為“灰色”-您可以使用“樣式”和“行為”來實現”。 看一下類似的帖子:

其中的某些XAML可能令人望而生畏-並且使用Expression Blend需要一些時間來習慣-但是您將到達那里。 祝好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM