gpt4 book ai didi

c# - WPF 控件 - 是否应该不惜一切代价避免代码隐藏?

转载 作者:太空狗 更新时间:2023-10-29 20:04:29 25 4
gpt4 key购买 nike

我有一个 WPF 项目,需要创建一个特定于域但将在多个 View 中重复使用的控件。

控件必须以 3 个部分显示小数值,整数部分和小数部分分成 2 个,字体大小不同。我有一个金额的依赖属性,然后在后面的代码中将金额分成 3 个部分,这样我就可以在特定的标签中显示它们。我还使用小数来决定金额是上升还是下降,然后更改控件的背景颜色。所有这些都是在后面的代码中完成的。我知道有人说代码隐藏是邪恶的,在大多数情况下我都同意。但是,否则您将如何实现?

最佳答案

不,不应该不惜一切代价避免它。

请记住,数据就是数据,UI 就是 UI

例如,如果您的代码 UI 内容,那么将代码放在后面并没有错。

任何与实际数据一起工作的东西,包括与 ViewModel 一起工作,通常都应该在代码隐藏中避免,因为您随后会创建依赖关系,这破坏 MVVM设计模式。

所以为了更直接地回答你的问题,你所做的没有任何问题。

编辑

让我进一步解释。

想象一下场景,您有一个 View ,其中有一个按钮,当它被点击时需要启动一个Storyboard。 (当然,您只能在 XAML 中执行此操作,但这只是一个示例)

在这种情况下,向按钮添加单击事件并从代码隐藏启动 Storyboard没有任何问题。这是仅 UI 代码,因此很安全。

但是,假设您的按钮在被点击时需要更改 ViewModel 中的属性。您不应该在代码隐藏中获取DataContext。您将需要使用 Command,因为您需要将 ViewViewModel 分开。

如果您的 View 有代码隐藏,那么您应该被带回去并在后脑勺上开枪,这是一种执行方式。这是不正确的。

总而言之,MVVM 是一种模式,而不是法律。

关于c# - WPF 控件 - 是否应该不惜一切代价避免代码隐藏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30805330/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com