1
可以说我在画布中有一个ItemsControl。在项目控件的项目之间共享属性的最佳做法
每个项目都有自己的位置,但我希望所有项目都分享相同的宽度。所以如果用户在一个地方改变它,所有的项目都会被更新。 要做到这一点最干净的方法是什么?
现在我看到2个解决方案。
- 每当设置发生变化时,我都会更新每个项目的宽度属性。缺点是,这需要更多的资源,但现在每个项目的视图只是绑定到这个属性。
- 我将宽度属性添加到绑定到包含项目的控件的ViewModel。我给ItemsControl一个名字(例如“MyItemsContainer”)。 现在每个项目可以通过得到它:
{Binding ElementName=MyItemsContainer, Path=DataContext.Width}
与第二个解决方案的缺点是增加的依赖关系。首先必须有一个按该名称的ItemsControl(这使得不可能使用不同名称的ItemsControl中的项),而ItemsControl的DataContext需要有一个Width属性。
我希望找到替代解决方案或人们对两种解决方案的体验。