簡體   English   中英

在WPF中在運行時動態繪制或創建數據綁定的UserControl

[英]Draw or create databound UserControls dynamically at runtime in WPF

我正在嘗試在WPF中創建一個時間跟蹤應用程序。 用戶應該在畫布上繪制表示時間跨度的元素(時間跨度=條形圖)。 現在,在將現有數據欄數據綁定到集合時會添加它們(每個集合項目都包含其在畫布上的寬度和左側位置)。

“ bar”用戶控件具有一個名為“ ProjectProperty”的依賴項屬性,該屬性負責在Canvas上繪制和放置bar。

但是,當用戶在“畫布”上繪制新的條形時,需要發生什么? 它必須以某種方式進行數據綁定,但是這需要在什么時間發生,我該怎么做?

我知道Canvas上的每個“ bar” UserControl都是數據綁定的,僅僅是因為它們已經存在於數據源中。

假設用戶在mousedown上開始繪制該條,而在mouseup上完成,我是否需要以編程方式將其左側位置和寬度添加到綁定的數據源中? 如果沒有,那么如何更新數據源?

謝謝!

將View綁定到ViewModel,Model或Collection時,我采用的一般方法是推動Model / Collection中的所有更改-因此,視圖純粹是在偵聽並反映其綁定的內容。 因此,盡管您正在跟蹤鼠標事件以捕獲條的位置和大小(並可能在用戶繪圖時繪制預覽),但是當用戶完成繪圖操作時,應將新項目添加到基礎集合中,然后讓氣泡上升到View。

在我看來,定期執行此操作的好處是,只有一條通過代碼的路徑可以添加新項(直接添加到數據源),這減少了代碼路徑並減少了錯誤/維護麻煩。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM