如何在动态生成时保留屏幕上的磁贴



每次用户单击"新建"按钮时,我都会尝试在屏幕上放置一个磁贴。我的 implmementation 有效,但我无法让任何动态生成的磁贴(从"new"按钮单击事件创建)在应用程序关闭然后重新加载后持续存在。我不知道问题是什么,因为当我导航到应用程序中的其他页面,然后返回到磁贴页面时,磁贴仍然存在。我拥有的如下:

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
    }

我有一个 Settings.cs 类,用于通过另一个 Setting.cs 类将数据保存在独立存储中

public class Settings
{        
    public static Setting<ObservableCollection<TileItem>> TileList = new Setting<ObservableCollection<TileItem>>("TileList", new ObservableCollection<TileItem>());
}

我总是在构造函数中调用 CreateTileList() 方法来生成第一个磁贴(无论如何它始终有效),然后检查用户是否创建了其他磁贴。如果是这样,我也尝试添加这些磁贴(仅当应用程序尚未关闭然后重新打开时才有效)。

请访问此链接以获取IS settings implementation。添加每个项目后,您还需要保存IS Settings。这样,您的应用程序列表将存储在 IS 设置中,在加载应用程序时,您需要将其复制到与 UI 绑定的列表(tileItems)中。我希望它有所帮助

当您从其他页面向后导航时,您正在谈论的主页会保持缓存状态,磁贴也是如此,这就是您看到它们的原因。

在我看来,错误出在从隔离存储保存/加载数据的某个地方。如果可以将断点放在

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

并检查独立存储设置磁贴列表中的内容,你可能会注意到那里没有任何内容。

相关内容

最新更新