2011-06-22 18 views
1

これについていくつか検索しようとしましたが、必要なものを正確に見つけることができませんでした。私はハードコードされた項目を持つコンボボックスを持っていたいが、デフォルトの文字列を含んでいる。たとえば、次のようにComboBoxのデフォルト値を設定する

を選びなさい - Item--

アイテム1

アイテム2

ITEM3

私は、選びなさい - Item--がリスト内に表示させたくありませんコンボボックスそのもの。 また、私はこの値を編集可能にしたくありません。

ありがとうございました。

+1

これはデフォルト値ではなく、 'null'の表現です。 –

答えて

2

あなたは可能性がありデフォルトテンプレートをオーバーライドし、SelectedItemnullの場合にのみ表示されるTextBlockを含めます(そのためにdatatriggerを使用するスタイルを使用します)。デフォルトのテンプレートを取得するにはcheck MSDNDefault WPF Themesリンク)を変更できます。

+0

私はこの道を選んだ。ありがとうございました。 – ecMode

1

これを行うには、コンボボックスクラスを拡張し、この追加の基金を追加する必要があります。まず、デフォルト値を受け入れるメソッドを作成し、次にデフォルト・アイテムを除外するアイテムのリストを取得するための新しいメソッドを作成します。

あなたはまた、同様に多分リストに余分なアイテムを持つために考慮するために選択した項目の選択率を調整を検討して、デフォルト値が選択されたときにNULLを返す処理したいことがあり、例えば

+1

コントロールの動作を変更することは、最後の手段である必要があります。 –

1

私はこれを行う最も簡単な方法は、シンプルなスタイルであると思う:

<ComboBox> 
    <ComboBox.Style> 
    <Style TargetType="ComboBox"> 
     <Setter Property="IsEditable" Value="True" /> 
     <Setter Property="IsReadOnly" Value="True" /> 

     <Style.Triggers> 
     <Trigger Property="SelectedIndex" Value="-1"> 
      <Setter Property="Text" Value="-- Select Item --" /> 
     </Trigger> 
     </Style.Triggers> 
    </Style> 
    </ComboBox.Style> 
</ComboBox> 

がisEditableを=「真の」コンボボックスのTextプロパティを有効に設定します。 Textプロパティを編集できないようにするには、IsReadOnly = "True"も必要です。

関連する問題