Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF为每个视图创建一个按钮,将其设置为ContentControl的内容_C#_Wpf - Fatal编程技术网

C# WPF为每个视图创建一个按钮,将其设置为ContentControl的内容

C# WPF为每个视图创建一个按钮,将其设置为ContentControl的内容,c#,wpf,C#,Wpf,我有一个WPF、MVVM程序,它的主窗口分为一个ListBox边栏和一个带有ContentControl的主要部分。我想创建一个功能,为我在项目中拥有的每个视图填充一个按钮,并设置其命令,以便单击它将自动将ContentControl的内容设置为关联视图,即,在添加新视图时不必手动输入代码。像遍历所有视图文件之类的东西 编辑: 也许我还是不够清楚。 我所拥有和能做的——像猴子一样键入“新建”按钮,每次我向我的项目添加新视图时都会键入“yadda yadda” 我想要的是——写一个黑魔法,就像这个

我有一个WPF、MVVM程序,它的主窗口分为一个ListBox边栏和一个带有ContentControl的主要部分。我想创建一个功能,为我在项目中拥有的每个视图填充一个按钮,并设置其命令,以便单击它将自动将ContentControl的内容设置为关联视图,即,在添加新视图时不必手动输入代码。像遍历所有视图文件之类的东西

编辑: 也许我还是不够清楚。 我所拥有和能做的——像猴子一样键入“新建”按钮,每次我向我的项目添加新视图时都会键入“yadda yadda”

我想要的是——写一个黑魔法,就像这个项目中有6个视图一样,我只需制作6个按钮,每个按钮在单击时都会导航到相应的视图,而编写我的人在任何时候添加新视图时都不必编写任何额外的代码行


我如何才能做到这一点?首先,这是一个好主意吗?

出于教学目的,我将调用您的视图类视图

创建某种类型的集合对象列表、ObservableCollection等来存储所有视图

将此集合指定给依赖项属性。我称之为视图

声明选定/活动视图的依赖项属性。我叫它SelectedView

将ListBox.ItemsSource绑定到视图

绑定列表框。选择要查看的编辑项

将ContentControl.Content绑定到视图


使用上述设置,ContentControl将显示列表框中选择的任何视图。

到目前为止您尝试了什么?知道如何迭代我的项目中的所有视图文件吗?@Shrodinger是视图代码文件,还是数据文件的某个副本?它们是.cs文件。@Shrodinger如果每个视图文件都是自己的类,最简单的方法是手动定义一些包含每个视图类的指令的静态列表。