请看这个简单的错误5分钟:
<textblock (...) Width="0" />
工作得很好,textBox似乎是0px瘦。有价值的工作,如2,3,4 ......
现在这不起作用:
<TextBlock (...) />
<TextBlock.Width>
<MultiBinding Converter="{StaticResource WidthConverter}">
<MultiBinding.Bindings>
<Binding RelativeSource="{RelativeSource Self}" />
<Binding RelativeSource="{x:Static RelativeSource.Self}" Path="TemplatedParent.Parent.ActualWidth" />
</MultiBinding.Bindings>
</MultiBinding>
<TextBlock.Width>
</TextBlock>
Public Class WidthConverter
Implements IMultiValueConverter
Public Function Convert(ByVal values() As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IMultiValueConverter.Convert
Return 0
End function
end class
为什么我可以在xaml中为TextBox.Width设置零值而不在后面的代码中设置?
通过使用转换器,当返回0时,TextBlock.Width不设置为0而是设置为“auto”,我可以读取文本
答案 0 :(得分:2)
该属性属于double
类型,您返回int
,将其更改为return 0.0
,它应该有效。
(原因是绑定通过反射设置属性,并且没有隐式转换,因此如果您返回被认为不是数字的int
并且double.NaN
是用于描述Auto
行为的值