mikeo_410


Silverlightのカラーとバインディング

1.カラーをバインドすると実行時エラーになることがある

  話が長くなるので結論を先に書くと、バインドでカラーを設定しようとすると、実行時にエラーを起こすと言うことです。
  このエラーは、デバッグ中でもそのデバッガが補捉しないようで、表示されたダイアログでデバッグを選ぶと、別途デバッガが起動してしまいます。

  1. <ControlTemplate x:Key="ct1" TargetType="Button">
  2.     <Grid>
  3.         <Ellipse>
  4.             <Ellipse.Fill>
  5.                 <SolidColorBrush Color="{Binding Path=color1}"/>
  6.             </Ellipse.Fill>
  7.         </Ellipse>
  8.     </Grid>
  9. </ControlTemplate>

   ソリッドブラシの色を文字列でバインドするのはOKです。

  1. <ControlTemplate x:Key="ct1" TargetType="Button">
  2.     <Grid>
  3.         <Ellipse Fill="{Binding Path=color1}" />
  4.     </Grid>
  5. </ControlTemplate>

2.Silverlight の Colors は 14色

  C#の(ビハインドコード)を編集していて気が付くのは、"Colors."と打ち込んで表示されるメンバの一覧に14色しかないことです。
  XAMLの記述では、Background=""のような箇所では140の色名が表示されます。
  <SolidColorBrush Color=""/>
  のような箇所でも140色あります。
  WPFアプリケーションなら、Colorsも140色あります。
  この理由は私にはわかりません。
  Backgroundで選んでいるのは、Colorsのメンバではなくブラシだからと言うことでもないようです。
 14色以外の色を指定することは、エラーとは関係ないようです。

3.色を文字列で指定すること

  XAMLを記述するときには、ブラシもColorも文字列で色を指定します。
  ビハインドコードでは、SolidColorBrushやColorクラスのオブジェクトが対応します。
  また、バインディングをする場合は、文字列もオブジェクトも記述できます。

4.色の設定方法

  1. XAMLでBackground、Forground、Fill、BorderBrush などブラシの色を文字列で指定する。
  2. XANLで、ブラシのColorプロパティを文字列で指定する。
  3. 名前を付けたコントロールのブラシに、ビハインドコードでブラシオブジェクトを代入する。
  4. ブラシに文字列をバインドする。
  5. ブラシにブラシオブジェクトをバインドする。
  6. ブラシのカラーに文字列をバインドする。
  7. ブラシのカラーにカラーオブジェクトをバインドする。

  が、考えられます。すべてコンパイルできますが、6,7は実行時にエラーになります。


遺産相続 手続 川崎 不動産 東戸塚 マンション 足立区 不動産 美容外科 札幌