Xaml TextBlock Ширина противоречивого поведения - PullRequest
0 голосов
/ 18 января 2012

Пожалуйста, посмотрите на эту простую ошибку в течение 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

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

Используя преобразователь, при получении 0 TextBlock.Width устанавливается не в 0, а в "auto", я могу прочитать текст

1 Ответ

2 голосов
/ 18 января 2012

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...