2011-02-22 134 views
2

現在我有一個由六個按鈕組成的網格,它們都有不同的圖像。我還有一組六個圖像,它們是原始的灰色色調,代表你選擇它。當我選擇按鈕時,如何將圖像更改爲新的「選定圖像」按鈕。WP7點擊時如何更改按鈕的圖像

我假設你做的方法:

private void button1_click(object sender, RoutedEventArgs e) 
{ 

} 

我有麻煩找出放在裏面有什麼在這裏。通常我會認爲它會是這樣的:

button1.image = "image path"; 

但是,當製作一個WP7應用程序,你不能使用圖像關鍵字。有關如何在點擊時更改按鈕圖像的任何建議?

回答

2

在Silverlight(構建Windows Phone 7框架)中,Button控件沒有Image屬性。我推測你已經創建了原始按鈕,將一個Image元素作爲Button的子元素。假設你想要一整套按鈕具有相同的行爲,那麼使用視覺狀態代替它可能是有意義的。您可以通過更改ContentPresenter的不透明度來獲得一致的外觀,例如,對於「正常」狀態爲0.75的Opacity和對於「選定」狀態爲1.0的Opacity爲1.0。

確定哪個按鈕是選定的按鈕將是更棘手的部分,但如果您將按鈕包裝在ListBox中,則可以使用ItemContainerStyle中的「選定」可視狀態。

如果你想繼續,你已經採取了,然後因爲你知道,按鈕的內容是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方法將爲您處理。

+0

ListBox中的想法是有道理的,並會是非常有益的,但是我有被安排在2×3格六個按鈕,所以我不能想到的listBox將工作的方式。當我嘗試使用位圖圖像時出現錯誤的代碼塊時,它說它不存在於名稱空間中。我應該使用特定的命名空間嗎? – Connor 2011-02-22 18:39:06

0

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

除了手動調整圖像以匹配按鈕按下狀態,我相信你也可以實現你正在尋找的效果 - 當按下時按鈕圖像變成「灰色」 - 你可以使用「樣式」並使用「行爲」。看看類似的帖子:

在這個有些XAML的可能看起來令人生畏 - 使用Expression Blend將需要一些時間來適應 - 但你會得到那裏。祝你好運!

4

寫要改變圖像

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