2012-01-18 5 views
0

Пожалуйста, смотрите 5 мин при этой простой ошибке:Xaml TextBlock Ширина непоследовательность

<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 

почему я могу установить нулевое значение TextBox.Width в XAML, а не в коде позади ?

С помощью преобразователя, когда returing 0, TextBlock.Width не установлен в 0, но на «авто», я могу читать текст

+1

* Как это не работает? –

ответ

2

Свойство типа double, вы возвращаете int, изменение это до return 0.0, и он должен работать.

(Причина в том, что привязки набора свойств с помощью отражения, и не существует неявное преобразования в этом, так что если вы возвращаете int, который считается не числом, а double.NaN значение используется для описания Auto поведения)

+0

потрясающий! Теперь он отлично работает! Благодаря ! – Avlin

Смежные вопросы