Sagen, ich habe ein Nur-Lese-Modell ...Xamarin MVVM Benutzerdefinierte Modelleigenschaften?
[DataContract]
public partial class Person {
[DataMember]
public virtual string LastName { get; set; }
[DataMember]
public virtual string FirstName { get; set; }
}
A View ...
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="TheApp.APage"
BackgroundColor="#03264A"
Padding="0,0,0,0">
<ContentPage.Content>
<StackLayout
BackgroundColor="Transparent">
<ListView
ItemsSource="{Binding PersonSearchCollection}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Label
Text="{Binding FirstName}" />
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
</ContentPage.Content>
</ContentPage>
Und ein Ansichtsmodell (Grundidee)
namespace TheApp.ViewModels {
public class APagePageViewModel : Helpers.BindableBase {
private ObservableCollection<Person> _PersonSearchCollection = new RangeObservableCollection<Person>();
public ObservableCollection<Person> PersonSearchCollection {
get { return _PersonSearchCollection; }
set { SetProperty(ref _PersonSearchCollection, value); }
}
}
}
Mein Listview eine gebunden ist ObservableCollection des Typs: Person. Dies wird von einem ServiceStack-Aufruf ausgefüllt, wenn der Benutzer einen Namen für die Suche eingibt.
Derzeit ist das Label im DataTemplate an FirstName gebunden, aber ich möchte, dass es eine neue Eigenschaft ist: FullName (Person.FirstName + "" + Person.LastName).
Wie würde ich die Eigenschaft zum Modell hinzufügen, die ich nicht bearbeiten kann? Benötige ich eine separate VM für das Modell selbst und ändere stattdessen die ObservableCollection von diesem Typ? Jedes Beispiel wäre großartig!
Sorry, wenn dies eine grundlegende Frage ist, bin ich ziemlich neu zu Xamarin.
Vielen Dank!
Änderung Ihrer Datenvorlage –
Ramankingdom