在带有WPF的C#中应该使用什么设计模式来通过用户界面动态“更改对象的类”?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在带有WPF的C#中应该使用什么设计模式来通过用户界面动态“更改对象的类”?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1918字,纯文字阅读大概需要3分钟。
内容图文
![在带有WPF的C#中应该使用什么设计模式来通过用户界面动态“更改对象的类”?](/upload/InfoBanner/zyjiaocheng/817/cb5f04607b4e4d02a65b3a24b7cec68e.jpg)
我目前正在开发一个C#WPF应用程序,它允许你创建一个图形(即一堆通过边连接的顶点)然后使用这个图形作为模式在一堆其他(较大的)图形中找到它( “主持人”图.每个图元素至少具有类型和标签.
模式图元素(边和顶点)可以具有不同的“限制类型”.
例如,顶点可以具有限制“此顶点’标签必须是’顶点A’”或“此顶点”类型必须在集合{类型A,类型B,类型H}中“.
对于边缘,限制类型有点困难.边缘可以被限制为“简单”边缘或“路径”边缘.模式图中两个顶点之间的路径边可以视为占位符,允许您在主机图中的两个顶点之间找到多个边(和顶点).相比之下,简单的边缘允许您在主机图中只找到一个边(而不是其他顶点).
如果边缘具有路径限制(而不是正常的边缘限制),则它具有一些附加属性,例如路径上允许的最小路径长度或允许的顶点类型.
在这个UML类图中可以看到类型限制结构:
~~~
现在从UI的角度来看:用户应该能够配置边缘是否具有路径限制.如果有,则应自动显示其他设置的附加控件(TextBoxes,ListBoxes等).所有控件的更改应自动反映在数据结构中.
以下是更改所选边缘设置时用户界面的行为:
(实际上,在右侧,右侧还应该有一个滚动条,允许您向下滚动并配置路径上允许的边缘类型.现在也忽略顶点和边缘重叠设置.)
~~~
最后,我的问题归结为:
如何在保持WPF的数据绑定优点的同时实现这样的动态对象类更改? (对于动态对象类更改,我的意思是通过单击“将此边缘视为路径”复选框,所选边缘将获得不同的限制类型.)
我是否真的必须创建一个老式的事件监听器,在更改“将此边缘视为路径”复选框的值时触发,并使用它来“手动”更新其他侧边栏控件的可见性?
如果我以某种方式更改了限制类结构,它会以任何方式帮助吗?
解决方法:
你所追求的设计模式可能是MVVM.看起来你正在将你的UI直接附加到你的模型而中间没有视图模型.有时你可以逃避这个,有时候不会.
您可以编写应用于IsChecked属性绑定的值转换器,该属性将布尔值转换为限制类的正确实例并返回.随着复选框状态的更改,将创建一个不同的实例并将其分配到模型中.这将通过选择数据模板反映在UI中.
它可能比这更复杂,例如,如果你想在状态的变化之间保留值.这就是您希望在UI和模型之间引入视图模型的位置.视图模型紧密反映UI并具有相应的布尔属性,当更改时,您可以相应地更改模型.
无论哪种方式,都没有理由挂钩控件上的事件:尝试在视图模型中处理这一切.
内容总结
以上是互联网集市为您收集整理的在带有WPF的C#中应该使用什么设计模式来通过用户界面动态“更改对象的类”?全部内容,希望文章能够帮你解决在带有WPF的C#中应该使用什么设计模式来通过用户界面动态“更改对象的类”?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。