我們使用Controls.PreviewContactDown,PreviewContactUp和PreviewContactChanged事件來捕獲在Surface上放置,移除和移動的標記項目,這在出現Simulator應用程序時效果很好與表面。向Surface控件的OnContactDown事件添加延遲
在實際表面上,如果您過快地移動標記項目,相機實際上會失去標記焦點,假定它已被移除,然後在停止移動時重新捕獲它。這爲我們的客戶提供了很差的體驗。
我建議的方法是覆蓋或創建一個新的事件,將響應標記的項目事件,但不會觸發事件處理程序,直到延遲......即如果「ContactUp」被觸發,請等待100ms然後執行事件處理程序。理想情況下,我們只希望能夠使用備用附加屬性來定義這些事件處理程序,即
<Panel local:TagDown="TagDownEventHandler" />
而如果我們可以得到它使用ICommand的對象,而不是事件處理會更好。
TagVisualizer將無法正常工作那樣容易,因爲我們不知道具體是,我們正在使用什麼標籤,我敢肯定TagVisualizer需要指定要聽什麼標籤值 - 客戶端可以使用00-FF標籤的任何子集。 與此同時,TagVisualizer實際上可能會遭遇同樣的問題 - 我們的Dev表面單元會發生什麼,如果您以任何像樣的速度「拖動」帶標記的對象到表面上,那麼它實際上會丟棄對該對象的跟蹤 - I認爲這比其他任何內部攝像機的硬件限制更多。 – RTigger 2010-02-15 18:35:17
如果你不知道什麼標籤,那麼只需要匹配所有的(你也可以用編程的方式來完成)?問題解決了。是的,丟失的聯繫人是一個根本性的問題......但正如我所說的,電視能夠繞過它,因爲它不會立即刪除視覺效果,所以如果它在移動過程中失去聯繫,一旦它重新檢測,就會順利地追蹤。 – Schneider 2010-02-15 23:55:14