2016-07-02 170 views
-1

我有一個組合框,顯示來自ObservableCollection(包含多個目錄鏈接)的項目 然後我有幾個樹視圖和數據表,所有這些都需要根據組合框選擇引用目錄。知道我已經看到在過去類似的問題只是一直沒能找到它,因爲!!任何方向將不勝感激從單個組合框選擇中選擇多個值

例如收集的內容是:

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

現在的我m試圖找出如何從單個組合框選擇檢索多個值路徑離子:

  <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**"); 
    } 

這是我的TreeView的後端:

 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; 

    } 

至於 「複製線程」 的評論,我認爲這是不是這樣。該鏈接指的是數據網格選擇。我的問題是關於其項目具有多個屬性的組合框選擇。我的問題是如何從XAML中的相同選擇中提取多個屬性。

+1

最好的辦法是使用一些類似MVVM的解決方案,在這裏你有一個視圖模型,它具有綁定到ComboBox的'SelectedProject'和一些'Directory1,Directory2 ...'屬性,這些屬性是根據'SelectedProject'計算出來的,就像http ://stackoverflow.com/questions/33814890/wpf-mvvm-display-view-for-datagrids-selecteditem。或者如果你不想使用/學習MVVM(雖然我寧願推薦這樣做),你可以看看[SelectionChanged](http://stackoverflow.com/questions/2961118/wpf-combobox-選擇已更改事件具有舊值非新事件)組合框上的事件。 –

+0

感謝您的建議,尤金。我很早就開始編程教育,並慢慢向MVVM邁進。我很可能將我的代碼(和這個項目)重構爲未來的MVVM,但現在我希望有一個我發生的XAML解決方案,併發布在下面的答案中。感謝您的輸入!!! – ctalley5

回答

0

我找到了我的問題的答案。我很難找到這個解決方案,所以在這裏它可以防止任何人遇到同樣的問題!

而不是使用SelectedValuePath的...我能夠這樣做是爲了綁定到我的選擇的多個屬性:

樹形#1

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

樹形#2

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

Treeview#3

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