我正在处理的应用程序有标签,右侧有一个开关。以下是用于实现此目的的XAML示例:
<ViewCell x:Name="ss">
<StackLayout VerticalOptions="CenterAndExpand" Padding="20,0,20,0">
<StackLayout Orientation="Horizontal" VerticalOptions="CenterAndExpand">
<StackLayout HorizontalOptions="StartAndExpand" VerticalOptions="Center">
<local:LabelBodyRendererClass Text="Show Subcategory" YAlign="Center" XAlign="Center" />
</StackLayout>
<StackLayout HorizontalOptions="EndAndExpand" Orientation="Horizontal">
<Switch x:Name="ssSwitch" Toggled="SsSwitch" VerticalOptions="Center" />
</StackLayout>
</StackLayout>
</StackLayout>
</ViewCell>
我想知道的是,是否有更优化的方法来实现这一目标。设置页面有许多开关设置,似乎有大量的元素。
有没有人有更简单的方法来实现相同的功能,或者我应该坚持使用许多stacklayout元素?
答案 0 :(得分:2)
您可以使用内置的SwitchCell,但如果您需要/需要为布局执行自定义单元格,则可以使用Grid
代替StackLayout
。它更有效,并且更容易定义布局。
<ViewCell x:Name="ss">
<Grid VerticalOptions="CenterAndExpand" Padding="20, 0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<local:LabelBodyRendererClass HorizontalOptions="StartAndExpand" Text="Show Subcategory" YAlign="Center" XAlign="Center" />
<Switch x:Name="ssSwitch" Grid.Column="1" Toggled="SsSwitch" VerticalOptions="Center" HorizontalOptions="End" />
</Grid>
</ViewCell>
使用您的示例:您将拥有一个2列的1行网格。第一列将是您的自定义控件LabelBodyRendererClass
,第二列将是您的开关。
请注意,您可以在UI控件中应用“水平”和“垂直”选项。
有关Grid
的更多信息<强> UDPATE 强>
当然,您可以像使用其他任何单元格一样使用XAML中的SwitchCell
。
<SwitchCell x:Name="SS" Text="{Binding Setting1Text}" On="{Binding Setting1}" />
<SwitchCell Text="{Binding Setting2Text}" On="{Binding Setting2}" />
<SwitchCell Text="{Binding Setting3Text}" On="{Binding Setting3}" />
<SwitchCell Text="{Binding Setting4Text}" On="{Binding Setting4}" />
这些示例正在使用绑定,但作为您的CustomCell,您可以使用该名称从后面的代码中获取和设置值,但我建议您使用绑定。
希望这会有所帮助.-
答案 1 :(得分:0)
看看here。