2010-09-01 42 views
1

我只是在看一個名爲How Do I: Use Attached Properties to Store Extra Data in WPF的「how-to」類型的WPF視頻,並且它描述了當您想要將兩條信息與單個控件相關聯時要做什麼。如果你想放入一條信息,他們說要使用Tag屬性。正在將信息存儲在不相關的附屬屬性中的代碼氣味?

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

不夠公平。

然後他們說,「如果你想存儲第二塊數據,比如說一個整數,會發生什麼?」他們說,解決方案是使用未使用的附加屬性。

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

他們說,因爲它是在一個網格中,沒問題!我說「Bleh!」這讓我感到非常討厭...而且很難誤導讀者。這是常見的做法嗎?

+1

「他們說,因爲它在網格中,沒問題!」 - 在那之後,我的嘴裏有一點點的嘔吐...... – Goblin 2010-09-01 20:36:22

回答

2

它快速簡單,但最好定義您自己的附加屬性或自定義控件來處理這些情況。對於原型或快速一次性應用來說,這是一種可行的方式,但是如果代碼要具有實際使用壽命並且需要進行維護,則不應該這樣做。

+0

是的,我的意思是,一次性的應用程序,你會扔掉,當然;什麼都可以,對不對?但我在談論真正的應用程序;我的意思是,這是視頻的全部內容:「我如何:使用附加屬性在WPF中存儲額外數據」,這就是答案。醜陋地毆打我。 – Beska 2010-09-01 20:40:10

3

是的,這是一種氣味。

我不確定它是否普遍 - 我從未見過它。

坦率地說,我發現Tag本身就是一個框架認可的氣味。

+0

我同意,但我經常看到它,我已經接受它。這對我來說似乎更糟,因爲Tag並沒有真正的含義,而Canvas.Top肯定是這樣。 – Beska 2010-09-01 20:58:08

0

這種技術可以是一個真正的節省時間。它的使用告訴你,「我不應該浪費更多的時間去學習這些培訓材料。」