c# - WPF - 控制可见性 - 更好地使用绑定?
问题描述
对于我的应用程序,我更新了很多控件以更好地结合 MVVM 模式,因为当我最初启动该项目时,我以前从未使用过 WPF。
我的问题是数据绑定是否可能过于疯狂,或者我应该几乎完全使用它?
例如,假设我有两个名为 Grid_Sample1 和 Grid_Sample2 的网格。这些网格基于用户单击按钮是可见的。所以我为那个按钮设置了一个事件,我可以在其中折叠它们或使它们可见。在事件内部,我可以编写以下代码来隐藏它们:
Grid_Sample1.Visibility = Visibility.Collapsed;
Grid_Sample2.Visibility = Visibility.Collapsed;
或者我可以通过绑定它们的可见性属性的麻烦:
private Visibility _grid_Sample1Visibility
public Visibility Grid_Sample1Visibility
{
get
{
return _grid_Sample1Visibility ;
}
set
{
_grid_Sample1Visibility = value;
OnPropertyChanged("Grid_Sample1Visibility");
}
}
然后通过绑定切换可见性。
经验丰富的 WPF 用户的首选方法是什么?有什么理由为这么简单的事情使用绑定吗?
解决方案
经验丰富的 WPF 用户的首选方法是什么?
后者,即在与视图中定义的可视表示分离的视图模型类中实现您的应用程序逻辑。
有什么理由为这么简单的事情使用绑定吗?
MVVM 模式的主要动机是它提供了应用程序中不同组件之间的关注点分离,这使得随着时间的推移更容易维护和发展。小型应用程序通常会在某些时候变得更大,从一开始就遵循 MVVM 指南不会对您造成伤害。MVVM 还极大地提高了应用程序的可测试性,即使对于最小的应用程序也是如此。
所以可能的建议是学习和实施 MVVM 模式。这是开发基于 XAML 的 UI 应用程序时使用的推荐模式,这是有原因的。
理想情况下,视图应该只包含标记和不属于视图模型的任何与视图相关的逻辑。
推荐阅读
- docker - Docker 基本连接到本地 dynamodb 配置
- android - Android UI Designer (IntelliJ) - 等待构建完成?
- java - 如何在android studio中将堆栈从一个活动传递到另一个活动
- asp.net-core - IWebHost WebHostBuilder BuildWebHost 有什么区别
- javascript - 未捕获的错误:预期的“样式”是字符串数组 - Angular
- javascript - 控制键控功能有哪些不同的方法?
- apache - 为什么页面没有完全加载?
- ada - 无法编译 AdaControl:未知项目文件:“asis”
- wcf - WCF流模式真的很慢
- node.js - 如何检测用户主动登录 Windows 桌面?