2016-07-02 22 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; } 
} 

今、私は」:私は、任意の方向をいただければ幸いです!!ので、過去に同様の質問はそれを見つけることができませんでした見てきました

たとえば、コレクションの内容を知っています単一のコンボボックスから複数の値のパスを取得する方法を理解しようとしています。イオン:

  <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; 

    } 

は限り「重複スレッド」コメントとして、私はそれがだと思いますそうではありません。このリンクは、データグリッドの選択を参照しています。私の質問は、複数のプロパティを持つ項目のコンボボックス選択に関するものです。私の質問は、XAMLの同じ選択肢から複数のプロパティを取り出す方法でした。

+1

あなたは 'SelectedProject'がComboBoxにバインドされたviewmodelと' SelectedProject'に従って計算されるいくつかの 'Directory1、Directory2 ...'プロパティを持つMVVMのようなソリューションをいくつか使用することをお勧めします://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

私の質問に対する答えが見つかりました。私はこの解決法を見つけるのに苦労したので、誰もが同じ問題に遭遇した場合に備えましょう!

ツリービュー#1

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

ツリービュー#2

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

を:代わりにSelectedValuePathを使用しての

...私はこれを行うことによって、私の選択の複数のプロパティにバインドすることができましたツリービュー#3

ItemsSource="{Binding ElementName =comboBox, Path=SelectedItem.Directory3, UpdateSourceTrigger=PropertyChanged}" 
関連する問題