我有一个WPF项目,需要创建一个特定于域的控件,但将在多个视图中重用.
控件必须以3个部分显示小数值,整数部分和小数部分分成2个不同的字体大小.我有一个Amount的依赖属性,然后在后面的代码中分成3个部分的数量,所以我可以在特定的标签中显示它们.我还使用小数量来决定金额是上升还是下降,然后更改控件的背景颜色.所有这些都是在后面的代码中完成的.我知道有人说背后的代码是邪恶的,我在大多数情况下都同意.但是你会如何实现呢?
Mik*_*son 12
不,不应该不惜一切代价避免.
请记住,数据是数据,UI是UI.
例如,如果您的代码只包含 UI内容,那么代码背后就没有任何问题.
任何适用于实际数据的东西,包括ViewModel在代码隐藏中都应该避免使用,因为您将创建依赖关系,这会打破 MVVM设计模式.
因此,为了更直接地回答您的问题,您所做的事情没有任何问题.
编辑
让我进一步解释.
想象一下场景,你有一个视图,一个按钮需要Storyboard在单击时启动.(当然,你只能在XAML中这样做,但这只是一个例子)
在这种情况下,向按钮添加单击事件并从代码隐藏中启动故事板没有任何问题.这是仅限UI的代码,因此它是安全的.
但是,假设您的按钮需要在单击时更改ViewModel中的属性.你不应该DataContext在代码隐藏中抓住它.您将需要使用a,Command因为您需要将View与ViewModel分开.
有一种耻辱,如果你的观点有代码隐藏,那么你应该被拿回来并在头脑后面执行风格.这是不真实的.
总而言之,MVVM是一种模式,而不是法律.