Listview-Element angetippt in xamarin.Formen
Ich versuche, developp eine App in Xamarin.Forms und XAML, und ich brauche, um zu erfassen ein Ereignis, wenn ich Tippen Sie auf LV.
Was ich will, die app zu tun ist, ändern Sie die Farbe der Zelle (oder ein StackLayout in der Zelle), wenn der Benutzer Tippen Sie auf das Element, auf einer Liste.
Ich bin zu versuchen, die OnItemTapped-Eigenschaft der listview, aber es passiert nichts, wenn ich drücken Sie das Element.
Mein code ist ganz einfach:
Modell: Produkt-mit 2 propeties, name und Farbe.
public class Product: INotifyPropertyChanged
{
#region INotifyPropertyChanged implementation
public event PropertyChangedEventHandler PropertyChanged;
#endregion
public Product ()
{
}
public string Name { get; set; }
public bool Buy { get; set; }
public Color micolor { get; set; }
//Método para actualizar los cambios
protected virtual void OnPropertyChanged (string propertyName)
{
if (PropertyChanged == null)
return;
PropertyChanged (this, new PropertyChangedEventArgs (propertyName));
}
}
XAML: Nur eine Liste mit zwei Bindungen: die Namen in einem label, und die Farbe in der SL
<?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="pruebalv.MyPage1">
<ContentPage.Content>
<ListView x:Name="listView"
ItemTapped="OmItemTapped"
>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout
Orientation="Vertical"
BackgroundColor ="{Binding micolor}">
<Label Text="{Binding Name}"/>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</ContentPage.Content>
</ContentPage>
Hinter .cs-code: erstelle ich die Produkte (es ist nur ein Beispiel) und zu implementieren, die auf einen Gegenstand geklopft. Wenn das Element angetippt, ich will die Farbe ändern, die Eigenschaft des Elements gedrückt.
public void OmItemTapped (object o, ItemTappedEventArgs e)
{
var dataItem = e.Item as Product;
dataItem.micolor = Color.Green;
dataItem.Name = "Tapped!!";
}
Dem Ergebnis, das ich bekomme, wenn ich eine Liste erstellen, ist, dass nichts passiert, wenn ich Tippen Sie auf ein Element.
Tun, bin ich etwas fehlt? So wie ich das verstanden hab mit den tutorials, nur mit der "itemtapped" roperty der ListView und der InotifyProperty... auf die Produkte, würde ich die Ergebnisse sehen. Ist es richtig?
Danke!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wichtigen Teil in Xamarin.Formen MVVM-Infrastruktur ist, dass Sie müssen explizit aufgerufen werden PropertyChanged, wenn Sie ändern sich die Werte Ihrer Eigenschaften.
Daher müssen Sie zur änderung der ViewModel-code, so dass eine
PropertyChanged
Ereignis wird ausgelöst, wenn die Eigenschaft ändert. Siehe das folgende Beispiel.- Und Sie tun das gleiche mit Ihrem anderen Eigenschaften