如何在Xamarin中的XAML中使用类属性?

时间:2019-07-18 08:42:30

标签: c# android xaml xamarin android-databinding

我想要XAML文本视图中c#类的属性。这该怎么做?我想显示用户何时开始工作,结束他的工作时间(每天登录后的每一天)。

这是我的代码:

XAML

 <?xml version="1.0" encoding="utf-8"?>
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools" 

    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/gradient">


    <android.support.design.widget.BottomNavigationView
        android:id="@+id/bottom_navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        app:itemBackground="@color/colorPrimary"
        app:itemIconTint="@drawable/nav_item_color_state"
        app:itemTextColor="@drawable/nav_item_color_state"
        app:menu="@menu/bottom_navigation_main"

    />

    android:text="You're at work since:"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:textStyle="bold"
            android:textSize="24sp"
            android:textColor="#ffffff"
            android:layout_alignParentTop="true"
            android:layout_marginTop="84dp"
            android:id="@+id/entryTextView"
            android:layout_centerHorizontal="true"
            android:theme="@style/MyCustomTheme"/>
    <TextView
            android:text= Today you work already:"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_alignParentTop="true"
            android:layout_marginTop="226dp"
            android:textStyle="bold"
            android:textSize="24sp"
            android:textColor="#ffffff"
            android:id="@+id/timeTextView"
            android:layout_centerHorizontal="true" 
            android:theme="@style/MyCustomTheme"/>

我要与之绑定的C#类

public LoginViewModel(ILogin login)
{
    _loginService = login;
    _appVariables = new AppVariables();
    GoToDashboard = new Interaction<Unit, Unit>();
    var canLogin = this.WhenAnyValue(x => x.UserName, x => x.Password, LoginInputValidator.Validate);
    LoginCommand = ReactiveCommand.CreateFromTask(async () => { await TryLogin(); }, canLogin);
}

private async Task<IObservable<bool>> TryLogin()
{
    var lg = await _loginService.Login(_userName, _password);
    if (lg)
    {
        _appVariables.UserName = UserName;
        _appVariables.logDate = DateTime.Now;
        _appVariables.isLogged = true;

        await GoToDashboard.Handle(Unit.Default);
    }
    return Observable.Return(lg);
}

c#另一个课程

public class AppVariables
{
    public bool isLogged;
    public DateTime logDate;
    public DateTime offDate;
    public string UserName;
}

我已经尝试过

BindingContext = this;  
InitializeComponent();

但是它总是红色,我不知道出了什么问题。

1 个答案:

答案 0 :(得分:0)

1。要访问Xamarin.android项目中axml中的元素,可以使用:

TextView textV = FindViewById<TextView>(Resource.Id.entryTextView); 

2。TextView textV = FindViewById<TextView>(Resource.Id.entryTextView);应该添加到Activity类而不是模型类中。

3。要在label / textView中开始新行,可以使用"/n"

4。要使文本在textView中居中,可以设置TextAlignment

textV.TextAlignment = TextAlignment.Center;