【问题标题】:What is Segmented Control in Xaml?Xaml 中的分段控制是什么?
【发布时间】:2017-06-16 10:55:09
【问题描述】:

我想在单击段控制时在单个 xaml 页面中切换多个页面。 我想制作一个像页面上部一样的页面,它带有段控件,并且在此控件下方具有简单的布局,用于替换或切换其他页面,与下方位置更改相同,但上部仍保留用于下一页切换。

所以,我想在 xamarin.forms 中使用 xaml 中的段控制来编写切换页面的代码。

【问题讨论】:

    标签: xaml xamarin xamarin.ios xamarin.android xamarin.forms


    【解决方案1】:

    有一个 nuget 包FreshEssentials。它具有分段控制按钮的跨平台实现。找到这个Github 存储库以了解实现。

    希望对您有所帮助!

    【讨论】:

    • 这是在安卓上工作的吗?它似乎只适用于 iOS。
    • 我尝试了 FreshEssential 的 SegmentedButtonGroup,但效果并不好:尤其是,它无法以正确的样式呈现……看起来只是一组按钮放在一起。
    • 这是一个开源项目github.com/XAM-Consulting/FreshEssentials/tree/master/src/…,您可以根据需要修改代码。
    【解决方案2】:

    参考下面的链接使用 XAML 代码和 Cs 代码实现自定义段控制 https://github.com/sam-ss/Custom-Segmented-Control-Xamarin-Forms

    希望对您有所帮助!

    【讨论】:

    • 但是现在我希望我可以将许多页面切换到同一个 xaml 页面而无需导航页面并且仍然保持段控制。
    • 以及在你的项目中使用了哪个 NuGet 库。
    • 我没有使用任何类型的 NuGet 是自定义控件。
    • @Joy 您需要实现自己的逻辑来导航同一页面。这很容易。
    【解决方案3】:

    您可以从 nuget 这个库“Plugin.Segmented.Control”安装 来自本教程https://www.c-sharpcorner.com/article/segment-control-in-xamarin-forms/

    还有你的 xaml:

    <?xml version="1.0" encoding="utf-8"?>  
    <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:control="clr-namespace:Plugin.Segmented.Control;assembly=Plugin.Segmented" xmlns:iOSForms="clr-namespace:Xamarin.Forms.PlatformConfiguration.iOSSpecific;assembly=Xamarin.Forms.Core" iOSForms:Page.UseSafeArea="true" xmlns:local="clr-namespace:XFSegmentControlDemo" x:Class="XFSegmentControlDemo.Views.HomePage">  
        <StackLayout VerticalOptions="FillAndExpand" Padding="30" Spacing="20">  
            <Label Text="Segmented Control" FontSize="30" TextColor="White" HorizontalOptions="CenterAndExpand" />  
            <control:SegmentedControl x:Name="SegmentedControl" SelectedSegment="{Binding SegmentSelection}" TintColor="White" SelectedTextColor="BlueViolet" DisabledColor="Gray" Margin="8,8,8,8">  
                <control:SegmentedControl.Children>  
                    <control:SegmentedControlOption Text="Item 1" />  
                    <control:SegmentedControlOption Text="Item 2" />
                </control:SegmentedControl.Children>  
            </control:SegmentedControl>  
            <Label Text="{Binding SelectedSegment}" FontSize="40" TextColor="White" HorizontalOptions="CenterAndExpand" VerticalOptions="CenterAndExpand" />  
        </StackLayout>  
    </ContentPage> 
    

    将此代码放入您的视图模型中

    int _selectedSegement;  
            public int SelectedSegment {  
                get {  
                    return _selectedSegement;  
                }  
                set {  
                    _selectedSegement = value;  
                    switch (SelectedSegment) {  
                        case 0:  
                            break;  
                        case 1:  
                            break;  
                        case 2:  
                            break;  
                        case 3:  
                            break;  
                    }  
                    OnPropertyChanged("SelectedSegment");  
                }  
            } 
    

    最后一步把它放到你的 appDelegate 中

    global::Xamarin.Forms.Forms.Init();  
                SegementedControlRenderer.Initialize();  
                LoadApplication(new App());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-14
      • 1970-01-01
      • 2010-12-03
      • 1970-01-01
      • 2016-08-13
      • 2019-06-13
      • 2023-03-22
      • 1970-01-01
      相关资源
      最近更新 更多