繁体   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