2011-11-13 17 views
4

に変更しました。私はWindows Phone 7で全く新しい開発者です。私はTextBlock Text="{Binding MyDate}をMainPage.xamlページに持っています。TextBlockの色をcs(windows phone 7)から

このTextBlockの色をMainPage.xaml.csからどのように変更できますか?

+0

この質問を編集して、TextBlockがDataTemplateにあるというような詳細を提供してください。いくつかの代表的なXAMLを表示することは、私たちがあなたをより良く助けるのに役立ちます –

答えて

6

は、まず、あなたが例えば、TextBlock要素にx:Name属性を与える必要がありますx:Name="myTextBlock"。これを済ませたら、TextBlockはコードビハインドで、x:Nameと同じ名前のフィールドとして利用できます。 TextBlockのフォアグラウンドカラーを設定するには

、あなたはあなたのTextBlockをDataTemplateをしているとして、それは[おそらく]コレクション内の項目に結合されます

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

私はこれを持っています: "エラー1 \t名前 'myTextBlock'は現在のコンテキストに存在しません" – Karloss

+0

@Karloss:あなたのMainPage.xamlをすべて提供していないので、 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

ロジックはシンプルです。その後、textblockにバックグラウンドプロパティがないため、csファイルでそれぞれのテキストブロックの背景色を変更します。グリッドを置く理由です – aarti

+0

Gridのset nameプロパティを設定し、backroundを設定します。 – aarti

0

のようなものを使用することができます。つまり、色をプロパティにバインドすると、メインページではなくアイテムクラスでそのプロパティが必要になります。異なるアイテムを異なる色にしたい場合は、アイテムクラスにプロパティを追加する必要があります。正しいタイプ(Brush)ではないプロパティをすでに持っている場合は、バインディングでコンバーターを使用して不要なプロパティを追加することを避けることができます。

あなたのアイテムのクラスにプロパティを追加したくない場合は、最良のオプションは、ページのリソースで複数のDataTemplatesを宣言して、あなたが必要とテンプレートを交換することです:中

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

ゴーxamlのプロパティおよび追加