【发布时间】:2010-11-12 17:16:58
【问题描述】:
如果我在视图上有一个标签,我希望其宽度等于同一视图上的一个网格中两列的宽度,我将如何在不使用转换器的情况下设置绑定?我应该使用属性来执行我的计算并存储一个值吗?我的意图是,如果视图的网格大小发生变化,那么这个标签的大小也会发生变化以匹配两列的新宽度。
我应该把这个逻辑放在哪里?我正在尝试遵循 MVVM 模式,但我看到很多关于“MVVM 中的转换器”的线程都说要将逻辑放入视图模型中。
我尝试使用视图上的依赖属性来实现此行为,因为我的视图模型在技术上不知道我的视图(那么我的视图模型如何知道我的列当前有多宽?)。这与我在网上阅读的内容背道而驰。在实现此行为时,我注意到我不能按名称引用列,除非我的属性不是静态的,但依赖属性是静态的,所以我不确定如何在不创建更多属性来保存值的情况下调整我的值。
有人可以在这里提供帮助吗?我觉得我把这件事复杂化了。我只需要这个标签放在这两列上,但它们会伸展。它只是提供网格中相关字段的可视化分组。一旦我能做到第一个,其他两个应该同样相似。
【问题讨论】:
标签: wpf mvvm binding viewmodel