如何将代码模块(.cs)显示为列表框中的项目?

时间:2019-05-08 10:01:59

标签: c# wpf mvvm module listbox

我目前正在开发一个新的GUI,该GUI中有一个列表框。到目前为止,我已经设法在此列表框中显示并选择多个项目,这没什么大不了的。

我的目标是在项目内的文件夹中具有几个 .cs文件(也许在进一步的扩展als vb脚本文件中),这些文件会正确显示在主窗口中查看列表框,如果选择了列表框中的相应项目,则将执行该操作。

到目前为止,我已经尝试构建列表框和所有其他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文件(它们是某种脚本)替换(或连接)这些自定义类,以便显示这些文件名和选择要执行的相应文件。 (因此连接应该双向运行)

很抱歉,这个问题看起来有点怪异和笼统,但是我对此感到非常困惑。

1 个答案:

答案 0 :(得分:0)

我相信您已经把事情弄复杂了。这是将在目录中找到所有.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); }
}