将控件的高度绑定到特定于单位的测量值
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
。
【讨论】:
以上是关于将控件的高度绑定到特定于单位的测量值的主要内容,如果未能解决你的问题,请参考以下文章