2

リストの位置を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>
4

2 に答える 2

1

バインディングを試す{Binding ActualHeight, RelativeSource={RelativeSource Self},Converter={StaticResource LamdaConv}, ConverterParameter='val=>-val'}

于 2010-05-18T14:38:19.140 に答える
1

仕事に間違ったコントロールを使用しているように思えます。AGridは、このすべての努力なしでこれを処理できます:-

 <Grid>

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

ListBox常に左下隅に表示されるようになりました。それだけでなく、使用可能な高さの合計がリスト ボックス内のすべてのコンテンツの高さよりも小さい場合、使用可能な高さで制限され、スクロール バーが表示されます。そうでなければ、あなたのコードがフープを飛び越えなければならない何か。

于 2010-05-18T13:16:15.927 に答える