В WPF, как я могу установить TextBox MaxHeight в соответствии с двумя другими элементами управления - PullRequest
1 голос
/ 08 декабря 2011

У меня есть следующая структура:

            <StackPanel
                Name="stkOuter">
                <StackPanel
                    Name="stkInner">
                    Content...
                </StackPanel>
                <TextBox>
                    Content...
                </TextBox>
            </StackPanel>

Мне нужно установить MaxHeight для TextBox как

           stkOuter.ActualHeight-stkInner.ActualHeight

Но конвертер может принимать только один параметр, используя Binding, и ConverterParameterдолжен быть объектом.

MaxHeight="{Binding RelativeSource={RelativeSource AncestorType={x:Type StackPanel}}, 
                    Path=ActualHeight, 
                    Converter={StaticResource MyConverter}, 
                    ConverterParameter={WHAT GOES HERE?}}"

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 08 декабря 2011

Вы должны использовать IMultiValueConverter:

<TextBox.MaxHeight>
   <MultiBinding Converter={StaticResource myIMultiValueConverter}>
      <Binding /> <!-- bind the first value here -->
      <Binding /> <!-- bind the second value here -->
      ...
   </MultiBinding>
</TextBox.MaxHeight>
1 голос
/ 08 декабря 2011

Используйте MultiBinding вместо простого Binding;это позволит вашему преобразователю работать с несколькими входными значениями, которые все могут быть получены с помощью привязки (ConverterParameter не может получить свое значение от Binding).

...