2011-11-13 151 views
4

我是Windows Phone 7的全新開發人員。我在MainPage.xaml頁面上有TextBlock Text="{Binding MyDate}從cs(windows phone 7)更改TextBlock顏色

如何從MainPage.xaml.cs中更改此TextBlock的顏色?

+0

請編輯此問題以提供更多相關詳細信息,例如TextBlock在DataTemplate中。顯示一些有代表性的XAML將幫助我們更好地幫助您。 –

回答

6

首先,你需要給TextBlock元素的x:Name屬性,例如x:Name="myTextBlock"。完成此操作後,TextBlock將在代碼隱藏中作爲與您在x:Name中放置的名稱相同的字段提供。

要設置一個TextBlock的前景色,你可以使用像

myTextBlock.Foreground = new SolidColorBrush(someColor); 
+0

我有這個:「錯誤1 \t名稱'myTextBlock'在當前上下文中不存在' – Karloss

+0

@Karloss:由於您沒有提供所有的MainPage.xaml,我會猜測您要麼沒有' t給TextBlock一個'x:Name =「myTextBlock」'屬性,或者你的TextBlock位於'DataTemplate'內。 –

+0

是的,我的TextBlock位於DataTemplate中。我如何訪問它? – Karloss

0

試試這個:

<Grid Background="Yellow" > 
    <TextBlock Foreground="Blue" 
       Height="20" 
       HorizontalAlignment="Stretch" 
       Margin="0" 
       Text="this is a test"/> 
</Grid> 
+0

我需要根據邏輯來改變cs文件的顏色(有些字段會有紅色,其他的是黑色的) – Karloss

+0

然而邏輯很簡單,然後通過cs文件改變各個文本塊的背景顏色,因爲textblock沒有背景屬性,這就是爲什麼我們把網格。 – aarti

+0

設置網格的名稱屬性,然後設置背景。 – aarti

0

隨着你的TextBlock是一個DataTemplate,將[可能]被集合在結合的項目。這意味着,如果將顏色綁定到屬性,則在項目類中將需要該屬性,而不是在主頁中。如果你想要不同的項目是不同的顏色,那麼你將需要添加一個屬性到項目類。如果你已經有一個屬性不是正確的類型(Brush),那麼你可以在綁定上使用轉換器來避免添加不必要的屬性。

如果你不想屬性添加到您的項目類,那麼最好的辦法是在頁面的資源聲明多重的DataTemplates然後交換模板,因爲你需要:

something.ItemTemplate = (DataTemplate)this.Resources["BlueItemTemplate"]; 
0

圍棋在xaml中的屬性並添加

相關問題