将控件的高度绑定到特定于单位的测量值

Posted

技术标签:

【中文标题】将控件的高度绑定到特定于单位的测量值【英文标题】:Binding the Height of a Control to a unit specific measurement 【发布时间】:2012-01-05 16:10:10 【问题描述】:

我知道在 WPF 中,您可以用不同的单位指定控件的高度。

例如:

<Setter Property="Height" Value="0.35cm"></Setter>

我想将控件的高度绑定到我的 ViewModel 中的一个属性。使用绑定时如何指定高度以厘米为单位?我试图将 ViewModel 中的 Height 属性设置为字符串,并在高度测量后面附加“cm”:

ViewModel 在 XAML 中创建如下:

<local:HeadingViewModel Height="0.35cm"></local:HeadingViewModel>

控件的高度通过样式中的绑定设置:

<Setter Property="Height" Value="Binding Height, RelativeSource=RelativeSource Mode=TemplatedParent"></Setter>

这会设置高度,但不是以厘米为单位。它似乎是在 WPF 的默认单位中设置的。当我将高度从“0.35cm”更改为“0.35in”时,没有任何反应。它似乎停留在 WPF 的默认单位中。

如何通过绑定在与默认单位不同的测量单位中设置控件的高度属性?

【问题讨论】:

【参考方案1】:

实际上并没有使用 WPF 中的不同单元进行绑定的概念——只有一个 TypeConverter - LengthConverter——它将 XAML 提供的字符串转换为 double。根据您输入的单位,它会将结果乘以某个因子。

因此,如果要绑定到双精度数,则必须确保将代码中的双精度数转换为 WPF 的 1/94 英寸单位。或者您可以创建一个IValueConverter 来为您做这件事。

如果你想绑定到一个字符串,你可以写一个IValueConverter并从内部调用LengthConverter

【讨论】:

以上是关于将控件的高度绑定到特定于单位的测量值的主要内容,如果未能解决你的问题,请参考以下文章

Drupal 将类添加到特定于节点类型的行

Kotlin Compose Intrinsics 获取控件的高度

能够唯一标识某一控件的属性的是啥

如何在 ViewModel 中获取控件的高度

android java代码中设置控件的宽高单位是啥?

WPF 用Binding绑定一个属性,能否带上一个动画?比如我绑定了控件的高度。 但是我希望改变高度时呈现动画