2016-04-18 65 views
0

この問題が発生しました。私は自分のアプリケーションにコンボボックスを持っています(XAMLではなくコードで作成されています)。私は内部にチェックボックスを備えたドロップダウンコントロールが必要だったので、チェックボックスを使用しました。WPFコンボボックス(選択項目とテキストが異なる)

ここでは、意味がないので、コンボボックスの選択は必要ありません。そこで、コントロールのテキスト部分にラベルを表示したかったのです。

これを行う方法はありますか?最小の例を次に示します:

このように、ユーザーがチェックボックスをクリックすると、チェックボックスの内容がテキストフィールドに表示されます。

私も

myComboBox.SelectionChanged += (sender, jender) => 
{ 
    myComboBox.SelectedItem = null; 
}; 

テキストがこれまで表示されません。この方法を追加し、それを修正。しかし、コンボボックスのテキスト部分に固定文字列を書きたいとしたらどうでしょうか?

ありがとうございました

+0

はあなたがWPF Toolkitを使用して考えられていますか?彼らはあなたが何を記述しているかを正確にコントロールしています:https://wpftoolkit.codeplex.com/wikipage?title=CheckComboBox そうでなければ、私は信じているItemTemplateを使うことができます。 – Joe

+0

@Joeご意見ありがとうございます。とにかく私はWPFツールキットを考えたことはありません。ありがとう。ただし、そのコントロールはチェックボックスの内容を連結します。チェックボックスの内容の代わりにそこに現れる固定文字列が必要でした。 – frarugi87

+0

ああ、ごめん、私はそれがあなたの後ろだったと思った。 – Joe

答えて

1

うわー、これは本当の痛みです。私はそれがかなりシンプルだと思ったが、それはそうではないことが判明した。私はあなたがコンボボックスに表示されているコンテンツのテンプレートと、ドロップダウンリストに表示されているコンテンツとを別々に設定できると仮定しました。あなたはすることができますが、コンテンツセレクタを使用する必要があります。

How to display a different value for dropdown list values/selected item in a WPF ComboBox?

これはそれを行うための適切な方法です。しかし、まっすぐに静的なラベル/文字列を表示したいだけですか?テストを打つには見えないテキストブロックを設定

<Grid> 
     <ComboBox x:Name="Checkbox" SelectionChanged="Checkbox_SelectionChanged"> 
      <ComboBox.Items> 
       <CheckBox Content="Test1"/> 
       <CheckBox Content="Test2"/> 
       <CheckBox Content="Test3"/> 
      </ComboBox.Items> 
     </ComboBox> 
     <TextBlock IsHitTestVisible="False" Text="My Text" VerticalAlignment="Center" Margin="5"/> 
    </Grid> 

彼らはちょうどに受け継がれていることを意味:もしそうなら、それはちょうどあなたがすでにこのようなグリッドに持っているもの以上のことを重ねて、ずっとおそらくはるかに簡単ですコンボボックス:

enter image description here

+0

ありがとうございました。これは私が試したが、ヒットテストについて知らなかった別の解決策でしたので、私はそれを捨てました;)最後に、コンボボックスに別の要素を追加するようになりました(myComboBox.Items.Add( "My Text"); 「foreach」)。それは別の要素を表示しますが、色が異なるので見出しのように見えます...とにかくこの解決策を念頭に置いておきます – frarugi87

関連する問題