コメント セクションで述べたように、あなたの状況で a がどのようにComboBox
便利かわかりません。
これを使用してそのようなことを達成する方法の例を次に示しますTreeView
MSDN の例を使用して、ノードを表すクラスを作成しますTreeView
public class Path
{
public string Name { get; set; }
public bool IsLeaf { get; set; }
public ObservableCollection<Path> Children { get; set; }
}
HierarchicalDataTemplateを作成して表示する
<HierarchicalDataTemplate x:Key="LeafTemplate" ItemsSource="{Binding Children}">
<TextBlock FontStyle="Italic" Text="{Binding Name}" />
</HierarchicalDataTemplate>
<HierarchicalDataTemplate x:Key="FolderTemplate" ItemsSource="{Binding Children}" ItemTemplate="{StaticResource LeafTemplate}">
<TextBlock Text="{Binding Path=Name}"/>
</HierarchicalDataTemplate>
それを使用するaTreeView
を作成し、葉ではないパスのフォーカスを拒否します
<TreeView Width="400" Height="300" ItemsSource="{Binding Paths}"
ItemTemplate="{StaticResource FolderTemplate}" x:Name="myTreeView">
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="Focusable" Value="{Binding IsLeaf}"/>
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
この例をテストしたい場合は、Paths
塗りつぶしに次のコードを使用できます
Paths = new ObservableCollection<Path>();
var p1 = new Path { Name = "Folder 1", IsLeaf = false , Children = new ObservableCollection<Path>() };
var p11 = new Path { Name = "Item 1-1", IsLeaf = true, Children = new ObservableCollection<Path>() };
var p12 = new Path { Name = "Item 1-2", IsLeaf = true, Children = new ObservableCollection<Path>() };
var p13 = new Path { Name = "Folder 1-3", IsLeaf = false, Children = new ObservableCollection<Path>() };
var p131 = new Path { Name = "Item 1-3-1", IsLeaf = true, Children = new ObservableCollection<Path>() };
// Build path's
p13.Children.Add(p131);
p1.Children.Add(p11);
p1.Children.Add(p12);
p1.Children.Add(p13);
Paths.Add(p1);
もちろん、彼の可視性を制御し、ボタンがクリックされたときなど、いつでも表示させることができます。
<ToggleButton Content="Select Item" x:Name="treeViewVisible"/>
<TreeView Width="400" Height="300" ItemsSource="{Binding Paths}"
Visibility="{Binding ElementName=treeViewVisible, Path=IsChecked, Converter={StaticResource boolToVisibilityConverter}}" .... />
お役に立てれば