我目前正在开发一个新的GUI,它将列表框作为其中的一个关键元素。到目前为止,我已经成功地在这个列表框中显示和选择了多项,这并没有什么大不了的。
我的目标是将几个.cs文件(可能是进一步扩展的als脚本文件)放在项目中的文件夹中,这些文件正确地显示在主视图列表框中,如果选择了列表框中的相应项,则将执行这些文件。
到目前为止,我已经尝试构建列表框和所有其他GUI内容(按钮、文本、.)并将列表框与脚本模型的可绑定集合连接起来(这是一个用于测试的类,应该用正确的.cs文件替换)
在下面的代码中,您可以看到这个自定义类的工作以及多个列表框项的选择检查。
private void Run_Click(object sender, RoutedEventArgs e)
{
//Show user the scripts which are being processed, these are the previous selected Scripts
List<string> selectedList = new List<string>();
foreach (ScriptModel selectedScript in MainListBox.SelectedItems)
{
selectedList.Add(selectedScript.Name.ToString());
}
//check if no Script was selected, and if so, just return/do nothing
if (selectedList.Count() == 0) { return; }
MessageBox.Show("The following Scripts will be processed: " + Environment.NewLine +
string.Join(Environment.NewLine, selectedList));
//Call the Connection for Data-Export
}private BindableCollection<ScriptModel> _scriptscollection=new BindableCollection<ScriptModel>();
public BindableCollection<ScriptModel> ScriptsCollection
{
get { return _scriptscollection; }
set { _scriptscollection = value; }
}我想知道如何用项目文件夹中的实际.cs文件(它们是某种脚本)替换(或连接)这些自定义类,以便显示这些文件名并选择相应的文件执行。(所以连接应该是双向的)
如果这个问题看起来有点奇怪和笼统,我很抱歉,但我真的很困惑。
发布于 2019-05-08 10:18:38
我相信你把事情弄得太复杂了。下面的代码将在一个目录中找到所有的.cs文件,然后在选择ListBox中的一个文件时启动该文件。
很难确切地知道你想要什么,但希望这能帮上忙。
XAML
<ListBox ItemsSource="{Binding ScriptFiles}" SelectedItem="{Binding SelectedScript}"/>代码背后/ ViewModel
public List<string> ScriptFiles => Directory.GetFiles(FilePath, "*.cs").ToList();
private string selectedScript;
public string SelectedScript
{
get { return selectedScript; }
set { selectedScript = value; Process.Start(value); }
}https://stackoverflow.com/questions/56038125
复制相似问题