2010-03-31 100 views
1

我試圖在WPF中創建一個時間跟蹤應用程序。用戶應該將代表時間跨度(timespan = bar)的元素繪製到Canvas上。 現在,當數據綁定到集合時(每個集合項目包含畫布上的條形的寬度和左側位置),都會添加存在的條形。在WPF運行時動態繪製或創建數據綁定用戶控件

'bar'Usercontrol有一個名爲「ProjectProperty」的依賴項屬性,它負責繪製和定位Canvas上的條。

但是當用戶在畫布上繪製一個新條紋時需要發生什麼?它必須以某種方式被數據綁定,但是在什麼時候這需要發生,我該怎麼做?

據我所知,Canvas上的每個'bar'UserControls都是數據綁定的,只是因爲它們已經存在於數據源中。

假設用戶開始在mousedown上繪製條形圖並在mouseup上結束,我是否必須以編程方式將其左邊的位置和寬度添加到綁定的數據源?如果不是,那麼數據源如何更新呢?

謝謝!

+0

你可以顯示你的XAML和數據結構嗎?我不確定你的意思是將左邊的位置和寬度「添加」到數據源中。或者你的意思是「設置」?如果綁定是在XAML中定義的,那麼只需簡單地將新的Bar Control添加到源集合即可。 – 2010-03-31 15:12:01

回答

0

將視圖綁定到ViewModel,Model或Collection時,我採用的一般方法是從模型/集合中驅動所有更改 - 因此視圖純粹是傾聽並反映它綁定的內容。因此,儘管您正在跟蹤鼠標事件以捕獲條的位置和大小(並且可能會在用戶繪製時繪製預覽),但當用戶完成繪圖操作時,您應該將新項添加到底層集合中,然後讓這個泡沫直到視圖。

在我看來,這樣做經常付出的代價是隻有一條路徑通過代碼添加新項目(直接添加到數據源),並減少了代碼路徑和潛在的錯誤/維護難題。