Какъв е оптималният начин за показване на отметка срещу четири настройки с формуляри?

Имам екран, който показва четири реда: „Английски“, „Ромаджи“, „Кана“ и „Канджи“. Потребителят може да избере един от четирите и когато бъде избран, до него ще се появи отметка. Понастоящем се прилага по следния начин (само показва първите две):

        englishSide.GestureRecognizers.Add(new TapGestureRecognizer
        {
            NumberOfTapsRequired = 1,
            Command = new Command(() =>
            {
                englishImage.IsVisible = true;
                romajiImage.IsVisible = false;
                kanaImage.IsVisible = false;
                kanjiImage.IsVisible = false;
            })
        });

        romajiSide.GestureRecognizers.Add(new TapGestureRecognizer
        {
            NumberOfTapsRequired = 1,
            Command = new Command(() =>
            {
                englishImage.IsVisible = false;
                romajiImage.IsVisible = true;
                kanaImage.IsVisible = false;
                kanjiImage.IsVisible = false;
            })
        });

Тъй като броят на изборите се увеличава от 4 на повече, виждам, че това ще стане много по-сложно. Има ли по-оптимален начин да направите това?

За справка тук е Xaml:

<TableSection Title="Card Front Side">
                    <ViewCell>
                        <StackLayout x:Name="englishSide" Padding="20,0,20,0"
                                Orientation="Horizontal" VerticalOptions="Center">
                            <Label Text="English" XAlign="Center"/>
                            <Image x:Name="englishImage" Source="check.png" 
                                HorizontalOptions="EndAndExpand" IsVisible="false" />
                        </StackLayout>
                    </ViewCell>
                    <ViewCell>
                        <StackLayout x:Name="romajiSide" Padding="20,0,20,0"
                                Orientation="Horizontal" VerticalOptions="Center">
                            <Label Text="Romaji" XAlign="Center"/>
                            <Image x:Name="romajiImage" Source="check.png" 
                                HorizontalOptions="EndAndExpand" IsVisible="false" />
                        </StackLayout>
                    </ViewCell>

person Alan2    schedule 25.09.2016    source източник


Отговори (1)


Това, от което се нуждаете, е правилен модел на изглед, където ListView.ItemsSource е IEnumerable<YourViewModel>. Използвам Prism за Xamarin.Forms, за да улесня това.

Прочетете още:

YourViewModel ще бъде дъщерният изгледмодел, съдържащ цялата логика и капсулиращ бизнес обекта.

public class MyViewModel
{
    // INotifyPropertyChanged would be needed
    public MyModel Model {get;set;}

    public bool IsChecked {get;set;}

    public string Image => this.IsChecked? "theImage.jpg" : null;
}

Надявам се това да помогне.

person Thomas Hagström    schedule 25.09.2016