wpf-将标签宽度绑定到计算长度属性

wpf-将标签宽度绑定到计算长度属性,wpf,mvvm,binding,viewmodel,Wpf,Mvvm,Binding,Viewmodel,如果我在一个视图上有一个标签,我希望它的宽度等于同一视图中一个网格中两列的宽度,那么我如何在不使用转换器的情况下设置绑定?我应该使用属性来执行计算并存储值吗?我的意图是,如果视图的网格大小发生更改,则该标签的大小也将更改,以匹配两列的新宽度 我应该把这个逻辑放在哪里?我试图遵循MVVM模式,但我看到很多关于“MVVM中的转换器”的线程都说要将逻辑放入viewmodel中 我尝试在我的视图上使用依赖属性实现此行为,因为我的viewmodel在技术上不知道我的视图(那么我的viewmodel如何知道

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

我应该把这个逻辑放在哪里?我试图遵循MVVM模式,但我看到很多关于“MVVM中的转换器”的线程都说要将逻辑放入viewmodel中

我尝试在我的视图上使用依赖属性实现此行为,因为我的viewmodel在技术上不知道我的视图(那么我的viewmodel如何知道我的列当前有多宽?)。但这与我在网上读到的相反。在实现此行为时,我注意到,除非我的属性不是静态的,否则我无法按名称引用我的列,但依赖项属性是静态的,因此我不确定如何在不创建更多属性来保存值的情况下重新排列我的值


有人能帮忙吗?我觉得这太复杂了。我只需要这个标签坐在这两列,无论它们如何伸展。它只提供网格中相关字段的可视分组。一旦我可以做第一个,其他两个应该是相同的。

我的经验法则是,如果它与“视图”相关,那么就远离ViewModel。从您的描述来看,这听起来像是纯粹与视图相关的,所以我只会在codebehind或转换器中使用逻辑

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

所以我的建议是。。。如果它是视图相关的,那么可以随意使用转换器和代码隐藏。。。事实上,您应该使用它们,而不是ViewModel


这有用吗?

我不反对转换器。我在我的第一批wpf材料中使用了它们。我一直在尝试将我的wpf应用程序方法构建成一种更类似mvvm的方法,因此我不愿意使用它们完全是基于我所读到的有关mvvm的“最佳实践”内容。与所有mvvm一样,也有许多相反的论点,使我明白为什么我仍然应该使用它们。似乎每个人对mvvm的理解都有不同的分离边界,所以这确实让我很难选择最适合未来使用的方法。我最终没有使用转换器,而是使用了一些dp和回调方法,它们为我进行了计算。我把它全部放在视图中,因为它是特定于视图的。谢谢你的意见,克里斯。没问题。。。你做了正确的选择。。。你选择了你觉得舒服的。我认为任何人都不应该仅仅因为这是“最佳实践”就去做某件事,然后他们就无法重构或理解。显然,你不会做任何让别人生活困难的事情,也不会做任何阻碍可扩展性或不稳定的事情。。。在那之后,做你觉得合适的事。祝你好运