c# - WPF 为每个视图创建一个按钮,将其设置为 ContentControl 的内容
问题描述
我有一个 WPF、MVVM 程序,它的 MainWindow 分为ListBox
侧边栏和带有ContentControl
. 我想创建一个功能,该功能将为我在项目中拥有的每个视图添加一个按钮并设置其命令,以便单击它将 ContentControl 的内容自动设置为关联的视图,即我不这样做添加新视图时不必手动输入代码。像遍历所有视图文件或类似的东西。
编辑:也许我还是不够清楚。
我有什么和可以做什么 - 每次我向我的项目添加新视图时,都像猴子一样输入“新按钮,yadda yadda”。
我想要什么 - 写一段黑魔法,类似于“这个项目中有 6 个视图,我将只制作 6 个按钮,这样,当点击时,将导航到适当的视图,而不需要写我的人每次添加新视图时都必须编写任何额外的代码行”。
我怎样才能做到这一点,这是一个好主意吗?
解决方案
出于教学目的,我将调用您的“视图”类View
。
创建某种集合对象(
List<View>
、ObservableCollection<View>
等)来存储所有的View
s。将此集合分配给依赖项属性。我会打电话
Views
的。为选定/活动视图声明一个依赖属性。我会打电话
SelectedView
的。绑定
ListBox.ItemsSource
到Views
。绑定
ListBox.SelectedItem
到View
。绑定
ContentControl.Content
也View
一样。
通过上述设置,将ContentControl
显示.View
ListBox
推荐阅读
- python - (x,y,w,h) = cv2.boundingRect(contour) 它总是返回 0,0,0,0
- swift - 在 SwiftUI 中使用全局函数
- c++ - 如何处理 RAII 中的资源等待
- django - 使用 Cypress 在 Heroku 上测试 Django 应用程序
- ruby-on-rails - Ruby on Rails:语法错误,意外的 tSYMBEG,期待 do 或 '{' 或 '('
- windows - 从批处理文件中的 .txt 文件读取多个路径
- python - Python - Scrapy - 浏览网站
- prolog - 定义一个谓词 solution/3 当它的三个参数(所有列表)具有包含前两个参数的所有元素的第三个列表时为真
- javascript - 缩放到 react-simple-maps 中的特定点
- flutter - FormField 忽略父容器大小