ユーザーが「新規」ボタンをクリックするたびに、画面にタイルを配置しようとしています。私の実装は機能しますが、動的に生成されたタイル (「新規」ボタンのクリック イベントから作成されたもの) を取得できず、アプリを閉じて再読み込みした後も保持できません。アプリケーションの他のページに移動してからタイル ページに戻ると、タイルがまだ残っているため、何が問題なのかわかりません。私が持っているものは次のとおりです。
TilePage.xaml.cs
public TilePage()
{
InitializeComponent();
CreateTileList(); //create main tile first always and check if others exist
}
private void CreateTileList()
{
tileItems = new ObservableCollection<TileItem>()
{
new TileItem() { ImageUri = mainImage, Title = "main", /*Notification = "",*/ Message = "main", GroupTag = "MainGroup", TileName = "main" },
};
//Set the first tile item
this.tileList.ItemsSource = tileItems; //sets the tileList Listbox ItemsSource to tileItems ObservableCollection
if (Settings.TileList.Value.Count > 0) //add other tiles accordingly
{
foreach (var existingItem in Settings.TileList.Value)
{
tileItems.Add(existingItem);
}
}
this.tileList.ItemsSource = tileItems;
}
void addNew_Click(object sender, EventArgs e)
{
BitmapImage newTileImage = new BitmapImage();
var newItem = new TileItem() { ImageUri = newTileImage, Title = "new", /*Notification = "",*/ Message = "new browser", GroupTag = "TileGroup", TileName = "new" };
tileItems.Add(newItem); //update UI immediately
Settings.TileList.Value.Add(newItem); //update saved TileList
}
別の Setting.cs クラスを介して分離ストレージにデータを永続化するために使用される Settings.cs クラスがあります。
public class Settings
{
public static Setting<ObservableCollection<TileItem>> TileList = new Setting<ObservableCollection<TileItem>>("TileList", new ObservableCollection<TileItem>());
}
私は常にコンストラクターでメソッドを呼び出してCreateTileList()
最初のタイルを生成し (これは何があっても常に機能します)、ユーザーが他のタイルを作成したかどうかを確認します。その場合は、それらのタイルも追加しようとします (これは、アプリを閉じてから再度開いた場合にのみ機能します)。