コンボボックスをドロップすると、フラットリストの代わりにユーザーが階層リストを取得し、選択したノードが選択されるように、WPFのComboBox内にTreeViewを配置しようとしています。 ComboBoxの値です。WPF:ComboBox内のTreeView
私はこれを達成する方法をかなり探しましたが、私が見つけることができる最高のものは、WPFの初心者であるため、仕事をすることができないという潜在的な問題のほんの一部です。
私はWPFとデータバインディングに関する十分な知識を持っているので、データをツリービューに取り込むことができます。また、コンボボックス内でツリービューを取得することもできますが、達成できたことはまったく動作しません。私はスクリーンショットを添付して、私が意味することを示しています。スクリーンショットのコンボボックスは「開いている」ので、下部のツリービューはノードを選択できる場所で、ツリービューはコンボボックスの上に描かれています。ここで選択したノードのテキスト/値が必要です表示されるツリーに表示されます。
基本的にどのようにすればよいかわからないのは、treeviewのcurrrently selected nodeを取得してその値をコンボボックスに戻し、それを選択値として使用する方法です。ここで
は、私が現在使用しているXAMLコードです: <ComboBox Grid.Row="0" Grid.Column="1" VerticalAlignment="Top">
<ComboBoxItem>
<TreeView ItemsSource="{Binding Children}" x:Name="TheTree">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type Core:LookupGroupItem}" ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Path=Display}"/>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
</ComboBoxItem>
</ComboBox>
スクリーンショット:
私は(stackoverflowのは、私だけのエラーを与え続けて)私はスクリーンショットを投稿することができません理由はわかりませんので、ここでのURL: http://www.fixedvancouver.com/は、 pics/TreeInComboBox1.JPG –
あなたはこれを行うのに多くの時間を費やすことができます。独自のカスタムコントロールをローリングするのは難しい作業であり、非常に面倒です。私は真剣にあなたのデータを表示する別の方法を見ていきます。ユーザーはComboBoxでツリービューを期待していないし、データを表示する標準的でない方法はよく知られていないので混乱する可能性がある。 –
リストの代わりにTreeViewを表示するComboBoxを作成しました。 Silverlightにありますが、WPFで書き直すのは難しくないと思います。http://vortexwolf.wordpress.com/2011/04/29/silverlight-combobox-with-treeview-inside/ – vorrtex