我很想为我正在构建的 Silverlight 控件构建一个 CheckBoxList,但我在正确处理它时遇到了一些麻烦。
我所追求的是一个 CheckBoxList,它将 CheckBoxes 垂直包装在 * 高度的 GridRow 内。我遇到的问题是我想将 WrapPanel 的高度指定为它所在行的高度。
在 WPF 中,它如下所示:
<ScrollViewer BorderThickness="0"
HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Hidden" >
<ItemsControl Name="ic">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<toolkit:WrapPanel Orientation="Vertical"
Height="{Binding Path=ActualHeight,
RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType={x:Type ScrollContentPresenter}}}" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding Path=Description}" Margin="0,0,10,2" FontSize="12"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ScrollViewer>
Silverlight 不以相同的方式支持 RelativeSource,因此我无法以与 WPF 相同的方式来支持它。我已经看到了 RelativeSource 的一些变通方法,但它们要么非常冗长,要么我似乎无法让它们工作。
肯定有一种简单的方法可以在 Silverlight 中设置 WrapPanel 的高度吗?