Положение привязки к ActualHeight - PullRequest
2 голосов
/ 18 мая 2010

Я хочу связать позицию списков с ее собственной высотой в XAML. Таким образом, его левый нижний угол всегда будет на 0.0 холста. Я использую elementBinding, чтобы получить ActualHeight и конвертер, чтобы инвертировать свойство. Но высота, посылаемая конвертеру, равна 0.

Как мне решить эту проблему или я поступаю неправильно?

<Canvas x:Name="DisplaySurface">
    <ListBox x:Name="MenuList" Visibility="Visible"  
             Canvas.Top="{Binding ElementName=MenuList, Path=ActualHeight, 
             Converter={StaticResource LamdaConv}, ConverterParameter='val=>-val'}">

         <ListBoxItem Content="item 1" />
         <ListBoxItem Content="item 2" />
         <ListBoxItem Content="item 3" />
         <ListBoxItem Content="item 4" />
         <ListBoxItem Content="item 5" />
         <ListBoxItem Content="item 6" />
     </ListBox>
</Canvas>

Ответы [ 2 ]

1 голос
/ 18 мая 2010

Попробуйте связывание {Binding ActualHeight, RelativeSource={RelativeSource Self},Converter={StaticResource LamdaConv}, ConverterParameter='val=>-val'}

1 голос
/ 18 мая 2010

Похоже, вы используете неправильный контроль для работы. A Grid может справиться с этим безо всяких усилий: -

 <Grid>

    <Canvas x:Name="DisplaySurface">
    </Canvas>
    <ListBox HorizontalAlignment="Left" VerticalAlignment="Bottom" ...>
       <!-- items --->
    </ListBox>
</Grid> 

Теперь ListBox всегда появляется в левом нижнем углу. Не только это, но если общая доступная высота меньше, чем высота всего содержимого в списке, он будет ограничен доступной высотой и покажет полосу прокрутки. Что-то, что в противном случае ваш код должен был бы перепрыгивать через обруч.

...