<ListView ItemsSource="{Binding Items}" HasUnevenRows="true">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<ViewCell.View>
<local:MyItemView Value="{Binding .}" />
</ViewCell.View>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<ContentView>
<StackLayout Orientation="Vertical">
<Switch x:Name="DetailVisible" />
<Label Text="Detail" IsVisible="{Binding IsToggled, Source={x:Reference DetailVisible}}" />
</StackLayout>
</ContentView>
ListViewの各行の高さは各項目のスイッチの状態(ラベルの表示状態)によって変更される。
最初に表示された時の各行の高さで固定される。例えば、項目の1,3個目のスイッチがON(ラベル表示)、2,4個目のスイッチがOFF(ラベル非表示)という状態でListViewが初期化されると、ListViewの1行目、3行目はスイッチ+ラベルの高さ、2,4行目はスイッチのみの高さとなり、スイッチの状態を切り替えても各行の高さは変わらないので、1,3行目はスイッチをOFFにするとスイッチの下に空白が、2,4行目はラベルが隠れる、あるいは、その下の行に重なって見える形になる。