单个组合框选择的多个选定值

时间:2016-07-02 15:56:43

标签: c# wpf combobox treeview selectedvalue

我有一个组合框,显示来自ObservableCollection(包含多个目录链接)的项目。 然后我有几个树视图和数据表,所有这些都需要根据组合框选择引用目录。我知道我在过去看到过一个类似的问题,从那以后就找不到它了!任何方向都将不胜感激!

例如,集合的内容是:

    public class ProjectThread
{
    public String projectName { get; set; }
    public String Directory1 { get; set; }
    public String Directory2 { get; set; }
    public String Directory3 { get; set; }
}

现在我试图弄清楚如何从单个组合框选择中检索多个值路径:

            <ComboBox x:Name="comboBox" 
              HorizontalAlignment="Left" 
              ItemsSource="{Binding Items}"
              DisplayMemberPath="projectName" 
              SelectedValuePath="Directory1"/> (**How to reference multiple?)

以下是我的树视图的初始化方式:

        public MainWindow()
    {
        InitializeComponent();
        this.ListDirectory(treeView1, **unsure how to reference directory from combobox**"); 
        this.ListDirectory(treeView2, **unsure how to reference directory from combobox**"); 
    }

这是我的树视图后端:

        private void ListDirectory(TreeView treeView, string path)
    {
        treeView.Items.Clear();
        var rootDirectoryInfo = new DirectoryInfo(path);
        treeView.Items.Add(CreateDirectoryNode(rootDirectoryInfo));
    }

    private static TreeViewItem CreateDirectoryNode(DirectoryInfo directoryInfo)
    {
        var directoryNode = new TreeViewItem { Header = directoryInfo.Name };
        foreach (var directory in directoryInfo.GetDirectories())
            directoryNode.Items.Add(CreateDirectoryNode(directory));

        foreach (var file in directoryInfo.GetFiles())
            directoryNode.Items.Add(new TreeViewItem { Header = file.Name });

        return directoryNode;

    }

至于#34;复制线程&#34;评论,我认为情况并非如此。该链接指的是数据网格选择。我的问题是关于组合框选择,其项目有多个属性。我的问题是如何从XAML中的相同选择中提取多个属性。

1 个答案:

答案 0 :(得分:0)

我找到了问题的答案。我很难找到这个解决方案,所以在这里以防任何人遇到同样的麻烦!

而不是使用SelectedValuePath ...我可以通过这样做绑定到我的选择的多个属性:

Treeview#1

ItemsSource="{Binding ElementName =comboBox, Path=SelectedItem.Directory1, UpdateSourceTrigger=PropertyChanged}"

Treeview#2

ItemsSource="{Binding ElementName =comboBox, Path=SelectedItem.Directory2, UpdateSourceTrigger=PropertyChanged}"

Treeview#3

ItemsSource="{Binding ElementName =comboBox, Path=SelectedItem.Directory3, UpdateSourceTrigger=PropertyChanged}"