【发布时间】:2023-04-10 02:37:02
【问题描述】:
我有一个组合框,它显示来自 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 中的同一选择中提取多个属性。
【问题讨论】:
-
你最好的办法是使用一些类似 MVVM 的解决方案,其中你有一个带有
SelectedProject绑定到 ComboBox 的视图模型和一些根据SelectedProject计算的Directory1, Directory2 ...属性,比如在stackoverflow.com/questions/33814890/…。或者,如果您不想使用/学习 MVVM(尽管我更愿意推荐这样做),您可以查看组合框上的 SelectionChanged 事件。 -
感谢您的建议,尤金。我很早就开始接受编程教育,并且正在慢慢走向 MVVM。将来我很可能会将我的代码(和这个项目)重构为 MVVM,但现在我希望有一个 XAML 解决方案,我碰巧遇到并在下面的答案中发布。感谢您的意见!!!
标签: c# wpf combobox treeview selectedvalue