2012-01-18 12 views
0

請看5分鐘,在這個簡單的錯誤:XAML中的TextBlock寬度不一致的行爲

<textblock (...) Width="0" /> 

工作的偉大,文本框似乎是0像素薄。工程與價值一樣,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而不是在後面的代碼?

通過使用一個轉換器,returing 0時,該TextBlock.Width沒有被設置爲0,但爲「自動」,我可以閱讀文本

+1

*如何*它不工作? – 2012-01-18 12:10:21

回答

2

該物業是double類型的,你返回int,變化它到return 0.0它應該工作。

(原因是,綁定經由反射設置屬性,並且存在這樣的隱式轉換,因此,如果返回被認爲是不是數字和double.NaN一個int是用於描述Auto行爲的值)

+0

真棒!現在它工作正常!謝謝 ! – Avlin 2012-01-18 13:00:17