2012-01-18 9 views
0

この単純なバグで5分を見てください:XAMLのTextBlock幅一貫性のない行動

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

偉大な作業をテキストボックスは薄く0PXように見えます。

<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にゼロ値を設定し、できない理由:今それが動作しない値で動作するように、2、3、4 ...

? 「オート」に、私は、テキストプロパティがタイプdoubleである

+1

*どのように動作していませんか? –

答えて

2

を読むことができますが、

は0をreturingとき、コンバータを使用することにより、TextBlock.Widthが0に設定されていない、あなたはint、変更を返しますそれはreturn 0.0にそれは動作するはずです。

(その理由は、バインディングはリフレクションを介してプロパティを設定することであり、その内の暗黙の変換が存在しないので、そうでない数とdouble.NaNと見なされるintを返す場合Auto挙動を記述するために使用される値であります)

+0

すごい!今それは正常に動作します!ありがとう! – Avlin