Xaml TextBlock宽度不一致的行为

时间:2012-01-18 12:06:14

标签: .net wpf vb.net xaml data-binding

请看这个简单的错误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”,我可以读取文本

1 个答案:

答案 0 :(得分:2)

该属性属于double类型,您返回int,将其更改为return 0.0,它应该有效。

(原因是绑定通过反射设置属性,并且没有隐式转换,因此如果您返回被认为不是数字的int并且double.NaN是用于描述Auto行为的值