Eine sehr convenoent Möglichkeit, diese Arbeit zu tun ist, eine Struktur in den DataTemplate
für jedes Element der FlipView
zu bauen und aktualisiert nur ObservableCollection
verwenden, um hinzuzufügen, zu entfernen, die Elemente der FlipView
.
<FlipView x:Name="flipView" ItemsSource="{x:Bind flipviewCollection}">
<FlipView.ItemTemplate>
<DataTemplate>
<Canvas>
<Image Source="{Binding ImageSource}" Stretch="None"/>
</Canvas>
</DataTemplate>
</FlipView.ItemTemplate>
</FlipView>
definieren ein Modell für die Daten, die Sie in der DataTemplate
binden müssen:
public class ImageSourceClass
{
public string ImageSource { get; set; }
}
Dann im Code hinter Ihrer FlipView
, erstellen Sie eine Sammlung dieses Datenmodell und fügen Sie Daten zu dieser Sammlung :
ObservableCollection<ImageSourceClass> flipviewCollection = new ObservableCollection<ImageSourceClass>();
protected override void OnNavigatedTo(NavigationEventArgs e)
{
flipviewCollection.Clear();
flipviewCollection.Add(new ImageSourceClass { ImageSource = "Assets/1.jpg" });
flipviewCollection.Add(new ImageSourceClass { ImageSource = "Assets/2.jpg" });
flipviewCollection.Add(new ImageSourceClass { ImageSource = "Assets/3.jpg" });
flipviewCollection.Add(new ImageSourceClass { ImageSource = "Assets/4.jpg" });
flipviewCollection.Add(new ImageSourceClass { ImageSource = "Assets/5.jpg" });
}
Endlich, wenn Sie ein Element entfernen möchten, und ein neues in der Button-Click-Ereignis hinzu:
private void Button_Click(object sender, RoutedEventArgs e)
{
//index = flipView.SelectedIndex + 1 because when remove one item, next item will be shown,
//it will behavior like a new item replace the old one.
flipviewCollection.Insert(flipView.SelectedIndex + 1, new ImageSourceClass { ImageSource = "Assets/new.jpg" });
flipviewCollection.Remove(flipView.SelectedItem as ImageSourceClass);
}
Problem ist, wenn Sie ein FlipView
bauen nicht diese Methode verwenden, um, Sie Elemente FlipView
manuell nur hinzugefügt, müssen Sie auch manully ein wie gerade hier zum Beispiel in Ihrem Code entfernen:
private void Button_Click(object sender, RoutedEventArgs e)
{
var my_canvas = new Canvas();
var textbox = new TextBox();
my_canvas.Children.Add(textbox);
flipView.Items.Insert(flipView.SelectedIndex + 1, my_canvas);
flipView.Items.RemoveAt(flipView.SelectedIndex);
}