2016-07-02 15 views
-1

Ich habe eine Combobox, die Elemente aus einer ObservableCollection (die mehrere Verzeichnis-Links enthält. Ich habe dann mehrere TreeViews und Datatables, die alle auf die Verzeichnisse auf der Combobox Auswahl verweisen müssen weiß, ich habe hat eine ähnliche Frage in der Vergangenheit gesehen nur nicht in der Lage gewesen, es zu finden, da jede Richtung !! würde geschätztMehrere selectedvalues ​​von single combobox selection

zum Beispiel der Inhalt der Sammlung ist:

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

Jetzt I‘ Ich versuche herauszufinden, wie mehrere Wertepfade von einer einzelnen Combobox-Auswahl abgerufen werden Ion:

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

Hier ist, wie meine treeviews initialisiert werden:

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

Und mein treeview Backend hier:

 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; 

    } 
, denken

Was die "Duplicate thread" Kommentar, den ich, das ist nicht der Fall. Die Verknüpfung bezieht sich auf die Auswahl von Datagrids. Meine Frage betrifft die Auswahl von Comboboxen, deren Artikel mehrere Eigenschaften haben. Meine Frage war, wie mehrere Eigenschaften aus derselben Auswahl in XAML gezogen werden.

+1

Am besten verwenden Sie eine MVVM-ähnliche Lösung, in der Sie ein Viewmodel mit 'SelectedProject' an die ComboBox gebunden haben und einige' Directory1, Directory2 ... 'Eigenschaften, die entsprechend dem' SelectedProject' berechnet werden, wie in http : //stackoverflow.com/questions/33814890/wpf-mvvm-display-view-for-datagrids-selecteitem. Oder wenn Sie MVVM nicht verwenden/lernen möchten (obwohl ich es Ihnen lieber empfehlen würde), können Sie sich die [SelectionChanged] (http://stackoverflow.com/questions/2961118/wpf-combobox- selectionchanged-event-hat-alten-Wert-nicht-neu) Ereignis auf der Combobox. –

+0

Danke für den Vorschlag, Eugene. Ich bin früh in der Programmierung Ausbildung und langsam in Richtung MVVM. Ich werde wahrscheinlich meinen Code (und dieses Element) in Zukunft zu MVVM umgestalten, aber im Moment habe ich auf eine XAML-Lösung gehofft, die mir zufällig passiert ist und in der Antwort unten gepostet wurde. Danke für deinen Beitrag!!! – ctalley5

Antwort

0

Ich habe die Antwort auf meine Frage gefunden. Ich hatte es schwer, diese Lösung zu finden, also hier ist es für den Fall, dass jemand auf die gleichen Probleme stößt!

Statt SelectedValuePath der Verwendung ... Ich konnte mehrere Eigenschaften meiner Auswahl binden, indem dies zu tun:

Treeview # 1

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

Treeview # 2

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

Baumansicht # 3

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