将信息存储在不相关的附加属性中是否有代码味道?

时间:2010-09-01 20:11:25

标签: wpf attached-properties

我正在观看一个名为How Do I: Use Attached Properties to Store Extra Data in WPF的“操作方法”类型的WPF视频,它描述了当您想要将两条信息与一个控件关联时要执行的操作。如果你想要输入一条信息,他们会说要使用Tag属性。

<Grid>
    <TextBox Tag="innerData">
</Grid>

足够公平。

然后他们说,“如果你想存储第二个数据,比如整数,会发生什么?”他们说解决方案是使用未使用的附加属性。

<Grid>
    <TextBox Tag="innerData" Canvas.Top="55">
</Grid>

他们说因为它在网格中,没问题!我说“Bleh!”这让我觉得非常讨厌......并且读起来很容易让人误解。这是常见做法吗?

4 个答案:

答案 0 :(得分:3)

是的,这是一种气味。

我不确定它是否常见 - 我以前从未见过它。

坦率地说,我发现Tag本身就是一种框架认可的气味。

答案 1 :(得分:2)

它既快速又简单,但最好定义自己的附加属性或自定义控件来处理这些情况。这种类型的东西可以用于原型或快速的一次性应用程序,但如果代码将具有需要维护的实际生命周期,则不应该这样做。

答案 2 :(得分:1)

不是最佳做法。

我一直认为,代码(包括Xaml)是人类可读的。

需要花费大量的研究来确定谁在使用该属性,以及用于什么。

答案 3 :(得分:0)

这种技术可以节省时间。使用它告诉你,“我不应再浪费时间研究这些培训材料。”