0

ユーザーが「新規」ボタンをクリックするたびに、画面にタイルを配置しようとしています。私の実装は機能しますが、動的に生成されたタイル (「新規」ボタンのクリック イベントから作成されたもの) を取得できず、アプリを閉じて再読み込みした後も保持できません。アプリケーションの他のページに移動してからタイル ページに戻ると、タイルがまだ残っているため、何が問題なのかわかりません。私が持っているものは次のとおりです。

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()最初のタイルを生成し (これは何があっても常に機能します)、ユーザーが他のタイルを作成したかどうかを確認します。その場合は、それらのタイルも追加しようとします (これは、アプリを閉じてから再度開いた場合にのみ機能します)。

4

2 に答える 2

0

他のページから戻ると、メイン ページはキャッシュされたままになり、タイルもキャッシュされたままになるため、タイルが表示されます。

エラーは、IsolatedStorage からのデータの保存/読み込みのどこかにあるようです。ブレークポイントを設定できる場合

if (Settings.TileList.Value.Count > 0)

分離ストレージ設定のタイル リストの内容を調べてみると、おそらく何も表示されていないことに気付くでしょう。

于 2012-09-18T07:19:38.733 に答える
0

については、このリンクにアクセスしてくださいIS settings implementation。アイテムを追加するたびに、保存する必要がありIS Settingsます。これにより、アプリ リストが IS 設定に保存されます。この設定は、アプリケーションのロード時に、UI がバインドされているリスト (tileItems) にコピーする必要があります。役立つことを願っています

于 2012-09-18T07:18:22.607 に答える