2012年4月20日金曜日

SilverlightでColorPickerもどきを作成する | チェロと私とプログラミング


Silverlightで色選択ダイアログを作る機会がありました。
しかし、Silverlightには色選択ダイアログというものは無いようです。
こうなっては最早自作するしか方法がないですよね…
ということで、選べる色は14種類だけという似非カラーピッカーをComboBoxで作りました。

理想の画面はこんな感じになります。

コンボボックスを選択すると…

色一覧が表示される。

コンボボックスのプロパティをカスタムして、上記のような画面を作ることにします。

ところでこのコンボボックスの選択肢は、色見本+色名というスタイルになっています。
通常のバインドだけではこのような表現は出来ません。
1つ1つのスタイルは、ItemTemplateプロパティで指定したスタイルになるので、
色見本+色名を表示するTemplateを先に定義しておきます。


何年と名声オープンのロックンロール·ホールを行った


  
                  Stroke="Black" StrokeThickness="0" Width="25"
             HorizontalAlignment="Left" VerticalAlignment="Top" />
                  HorizontalAlignment="Left" VerticalAlignment="Top" />
  

コンボボックスの選択肢(データ)のテンプレなので、"DataTemplate"で定義します。
このテンプレをResourcesで定義し、コンボボックスのItemTemplateにバインドすれば、
選択肢のスタイルが「色見本+色名」という形になります。

次に、このテンプレでバインドしているクラスの構成です。
RectangleのFill、TextblockのTextに対応するプロパティを持つクラスになります。

'1色を管理するクラス
Public Class ColorListItem


今、私は音楽2012と呼んでいるものthatsの

  Public Property Color As Brush
  Public Property Name As String

  Sub New(ByVal colColor As Color, ByVal strName As String)
     Color = New SolidColorBrush(colColor)
     Name = strName
  End Sub

End Class

さて、最初に「14色」から選択できると書きましたが、何故14色限定なのでしょうか。

…別に14色にこだわってるわけではありません(笑)
Colorsクラスで定義済みの色が15色(有彩色14色+無色透明1色)だからです。
実際にオブジェクトブラウザーやMSDNで確認すれば分かりますが、Colorsクラスには、基本の15色の色名が定義されています。
もちろん、Color構造体を使えばもっと多くの色が表現できますが、
あくまで名前がついた色はColorsクラスで定義された色だけなのです。
(まぁ実際にはもっとありますが…)

そういうわけで、TransParent(透明色)を除いた14色を選択肢とすることにしました。
ColorsクラスのTransParent以外のプロパティをすべて取得し、リストに追加します。


どのように私は、CDに私のオーディオ録音を取得するには

'色リストを作成するメソッド
Private Sub CreateColorList()

  Dim mdicColor As New Dictionary(Of String, ColorListItem)

  'Colorsクラスから色一覧を作成
  For Each item As PropertyInfo In GetType(Colors).GetProperties()

    If item.Name.Equals("Transparent") Then
      Continue For
    End If

    Dim color As Color = CType(item.GetValue(Nothing, BindingFlags.Static, _
                          Nothing, Nothing, Nothing), Color)

    'リスト(Dictionary)に追加
    mdicColor.Add(color.ToString(), New ColorListItem(color, item.Name))

  Next

  ComboBox1.ItemsSource = mdicColor.Values

End Sub

GetProperties()メソッドでプロパティを取得し、GetValue()で値を取得します。
検索方法のフラグには、静的メンバーを検索する"BindingFlags.Static"を指定します。
なお、今回はリストをDictionaryにしたので、mdicColor.ValuesがColorListItemをもつリストになります。



These are our most popular posts:

無料で どのように卵チェロを作成する方法

どのように卵チェロを作成する方法, 無料オンラインゲームをプレイ どのように卵チェロを 作成する方法, Flash Game Town. read more

Playing: どのように卵チェロを作成する on FunFastGame.com

2010年6月6日 ... Playing online games: どのように卵チェロを作成する - 最大の卵料理の一つを作成 する方法を学習します。 ... ヨーロッパやアジアでは、ドレッシング、任意の数によって 補完することができる、または実際にはサラダconsituant、麺やご飯、伝統 ... read more

卵チェロを作成する方法

卵チェロを作成する方法. どのように1つの最大の卵料理のことを学ぶ。を. read more

どのように卵チェロを作成する方法

どのように卵チェロを作成する方法 フラッシュゲーム, FGT, Flash Game Town. read more

Related Posts



0 コメント:

コメントを投稿