关于mvvm:wpf-将标签宽度绑定到计算出的长度属性

wpf - bind label widths to calculated length property

如果我在一个视图上有一个标签,希望其宽度等于同一视图上一个网格中两列的宽度,那么如何在不使用转换器的情况下设置绑定?我应该使用属性来进行计算并存储值吗?我的意图是,如果视图的网格大小发生变化,那么此标签的大小也会发生变化,以匹配两列的新宽度。

我应该把这个逻辑放在哪里?我正在尝试遵循MVVM模式,但是我看到很多有关" MVVM转换器"的线程都说要将逻辑放入视图模型中。

由于我的视图模型从技术上不了解我的视图,因此我尝试在视图上实现具有依赖项属性的行为(因此,我的视图模型将如何知道当前列的宽度?)。这与我在网上阅读的内容背道而驰。实施此行为时,我注意到除非我的属性不是静态的,否则无法按名称引用列,但是依赖项属性是静态的,因此我不确定如何在不创建更多属性来保存值的情况下改组我的值。

有人可以在这里提供帮助吗?我觉得我太复杂了。我只需要此标签放在这两列上即可,但是它们会拉伸。它只是提供网格中相关字段的可视分组。一旦我可以做到第一个,其他两个应该同样相似。


我的经验法则是,如果它与"视图"相关,则将其远离ViewModel。从您的描述来看,这听起来似乎纯粹是与视图相关的,所以我只会在代码隐藏代码或转换器中使用逻辑。

现在我不明白的是为什么您不愿意使用Converters。对于转换器,您当然不希望存储将导致混乱或重构难点的业务逻辑,但是如果您需要为特定的视图操作转换某些值,那么转换器正是您应该使用的。

所以我的建议是转换器...如果它与View有关,那么可以随意使用Converters和Codebehind ...实际上,您应该使用它们而不是ViewModel。

有帮助吗?