2010-06-11 65 views
2

我下載了Windows Phone的Microsoft Visual Studio 2010 Express,並且編寫了一個簡單的應用程序來進行模擬器的第一次測試。在這個應用程序中,我只有一個按鈕,其屬性Content綁定到一個名爲ButtonText的字符串,並將屬性Background綁定到一個名爲FillColor的SolidColorBrush。我使用以下代碼處理了Click事件:
Windows Phone應用程序的第一次測試

void MyButton_Click(object sender, RoutedEventArgs e) 
    { 
     if (toggle == true) 
     { 
      ButtonText = "Blue"; 
      FillColor = new SolidColorBrush(Colors.Blue); 
     } 
     else 
     { 
      ButtonText = "Red"; 
      FillColor = new SolidColorBrush(Colors.Red); 
     } 
     toggle = !toggle; 
    } 

不幸的是,這不起作用。每次按下按鈕時,按鈕的內容都會改變,但對於保持相同顏色的背景,我不能這麼說。
你能告訴我什麼是錯的嗎?謝謝。

我還張貼XAML:

<Grid x:Name="ContentGrid" Grid.Row="1"> 
     <Button Name="MyButton" Width="300" Height="300" 
       Content="{Binding Path=ButtonText}" 
       Background="{Binding Path=FillColor}" /> 
    </Grid> 
+0

有趣。似乎 button1.Background = new SolidColorBrush(Colors.Red); 也不起作用,所以不是一個有約束力的問題。 可能值得發佈此連接如果解釋不是即將..有一個wp7類別下VS. – 2010-06-12 03:56:30

+0

設置fillColor = new SolidColorBrush(Colors.Red);着作初始化背景。它只有在該屬性發生變化時才起作用。 – 2010-06-12 10:51:35

+0

你在設置頁面的dataContext嗎? – 2010-06-14 04:50:48

回答

1

的問題是與該行使用的 「新」:

填充顏色=新的SolidColorBrush(Colors.Blue);

使用「新」操作會中斷先前設置的數據綁定。請嘗試使用以下代碼:

FillColor.Color = Colors.Blue;

將兩個更改都替換爲藍色和紅色,這應該有所斬獲。

HTH!
Chris

+0

謝謝你的回答。 FillColor的類型不是Color,而是SolidColorBrush。如果我將它轉換爲Color,它不起作用,因爲Background的類型不是Color。 此外,當你說「新」操作打破數據綁定時,我不同意你,事實上,同樣的解決方案在silverlight網站中完美工作。 – 2010-06-25 20:17:13

+0

如果您在我的回覆中注意到,我建議您更改FillColor的Color屬性的值,而不是FillColor屬性本身。在我的休閒問題中解決了基本問題。我已經遇到了與ObservableCollection相同的問題,在數據綁定之後在代碼中新建一個實例,實際上會破壞綁定。如果您有興趣,我可以提供完整的代碼示例以更詳細地顯示此代碼示例... – 2010-06-28 03:03:09

+0

再次感謝您。我對你的代碼示例很感興趣。您可以在我的個人資料中找到我的電子郵件。如果您向我發送代碼示例,我很樂意爲您提供幫助。 – 2010-07-03 20:48:06

相關問題