【问题标题】:Is there a way to code a label and a switch in a ViewCell without using StackLayout?有没有办法在不使用 StackLayout 的情况下在 ViewCell 中编写标签和开关?
【发布时间】:2017-07-26 11:34:10
【问题描述】:

我正在处理的应用程序有标签,右侧有一个开关。以下是用于实现此目的的 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 元素?

【问题讨论】:

  • 如果两个最里面的 SL 都只包含一个子元素,则它们实际上并不需要它们。但一般来说,只要你想在一个视图中包含多个元素,你就需要某种布局容器

标签: xamarin xamarin.forms


【解决方案1】:

您可以使用内置的 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

更新

当然,您可以像使用任何其他单元格一样使用 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,您可以使用名称从后面的代码中获取和设置值,尽管我建议您使用绑定。

希望这会有所帮助。-

【讨论】:

  • 谢谢,至于 SwitchCell,有没有办法用 XAML 做到这一点?
  • 使用 XAML 中的 SwitchCell 使用示例更新答案
【解决方案2】:

我猜你正在寻找的是:

看看here

【讨论】:

    猜你喜欢
    • 2014-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-10
    • 1970-01-01
    相关资源
    最近更新 更多