1
可以說我在畫布中有一個ItemsControl。在項目控件的項目之間共享屬性的最佳做法
每個項目都有自己的位置,但我希望所有項目都分享相同的寬度。所以如果用戶在一個地方改變它,所有的項目都會被更新。 要做到這一點最乾淨的方法是什麼?
現在我看到2個解決方案。
- 每當設置發生變化時,我都會更新每個項目的寬度屬性。缺點是,這需要更多的資源,但現在每個項目的視圖只是綁定到這個屬性。
- 我將寬度屬性添加到綁定到包含項目的控件的ViewModel。我給ItemsControl一個名字(例如「MyItemsContainer」)。 現在每個項目可以通過得到它:
{Binding ElementName=MyItemsContainer, Path=DataContext.Width}
與第二個解決方案的缺點是增加的依賴關係。首先必須有一個按該名稱的ItemsControl(這使得不可能使用不同名稱的ItemsControl中的項),而ItemsControl的DataContext需要有一個Width屬性。
我希望找到替代解決方案或人們對兩種解決方案的體驗。