簡體   English   中英

Xamarin.forms:在代碼和XAML中使用自己的類對象

[英]Xamarin.forms: using own class object in code and xaml

因此,我的班級為“ Datenbank”,其中包含ObservableCollection“ Liste”。 我需要在ListView中使用Liste的值,並且同時可以在代碼中對其進行編輯,但是我無法同時執行這兩個操作。 當我創建一個Datenbank對象時,我無法在Listview中使用它,並且如果僅對Listview使用類Datenbank及其構造函數,則無法在代碼中對其進行編輯。 我猜想將Datenbank設為靜態可能是一種解決方案,但是我無法使其工作(即使與靜態主題上的其他帖子一起使用)。 你們能幫我這個忙嗎? 謝謝 :)

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:local="clr-namespace:SportAchievements"
             x:Class="SportAchievements.MainPage"
             BackgroundColor="Silver"           
             >


    <ContentPage.BindingContext>
        < local:Datenbank />
    </ContentPage.BindingContext>
    <StackLayout>
        <ListView ItemsSource="{Binding Liste}"
              HasUnevenRows="True"
                  x:Name="LV1"
                 BackgroundColor="Silver"
              ItemTapped="ListView_OnItemTapped"
              >
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                        <StackLayout >
                            <Label Text="{Binding MyName}" BackgroundColor="Gray" TextColor="DodgerBlue"></Label>
                            <StackLayout IsVisible="{Binding IsVisible}" BackgroundColor="AliceBlue">
                                <Label  Text="{Binding Points, StringFormat= '\Punkte: {0\} '}"></Label>
                                <Label Text="{Binding Info}"></Label>
                                      />
                            </StackLayout>
                    </StackLayout>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
    </StackLayout>

</ContentPage>

Datenbank類:

namespace SportAchievements
{
    public class Datenbank
    {
        public ObservableCollection<Achievement> Liste;


        public Datenbank()
        {
            Liste = new ObservableCollection<Achievement>
            {
                new Achievement
                    {
                        MyName= "10 Liegestützen",
                        Info="bla bla bla",
                        Points =1,
                        IsVisible = false,
                        Done = false
                    }
            };
        }
    }
}

在主頁上,我要編輯Datenbank中的Liste:

namespace SportAchievements
{
    public partial class MainPage : ContentPage
    {

        public MainPage()
        {
            InitializeComponent();

        }

        public void Load_all()
        {
            var vm = BindingContext as Datenbank;
            foreach (Achievement myAch in vm.Liste)
            {
                string myreturnvalue = "";
                Load_key(myAch.MyName, ref myreturnvalue, "false");
                myAch.Done = Convert.ToBoolean(myreturnvalue);
            }
        }

    }
}

為我做了工作:)然后我可以從代碼中調用abc,而不會出現問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM