2014-02-15 126 views
0

使用VS開發Windows Phone應用程序。我做它的WP8,但它並不重要,因爲它的代碼也適用於7。無論如何,我有一個文本框和一個按鈕。當輸入文本框中的文本並單擊該按鈕時,將其添加到獨立存儲。 在我的其他頁面上,我有一個文本塊。哪個應該顯示我在文本框中寫的內容。它確實有用,但首先讓我向你介紹我的代碼。windows phone開發中的獨立存儲

if (appsettings.Contains("name")) 
{ 
    appsettings.Remove("name"); 
    appsettings.Add("name", TitleTextBox.Text); //rename if already exists 
} 

然後收集信息的第二頁在下面。

if (appsettings.Contains("name")) 
{ 
    string content = appsettings["name"].ToString(); //converts to string 
    titleTextBlock.Text = content; //shows title in text block 
} 

問題是,「名稱」的作品。但是,如果我把它稱爲其他任何東西,它都不會。我想添加一個不同的名稱,因爲我想能夠輸入兩個批次。例如兩個文本框,然後當您按下按鈕並轉到另一個頁面時,它有兩個文本塊,每個文本塊顯示每個字符串。我似乎無法做到這一點,因爲只有「名稱」的作品。我改變了它的其他名稱,它不起作用。有誰知道爲什麼?

+0

你的意思是什麼嗎?在使用它之前,你是否在字典中添加了一個密鑰?例如,如果我將其更改爲 – Romasz

+0

; 如果(appsettings.Contains( 「標題」)) { appsettings.Remove( 「標題」); appsettings.Add(「title」,TitleTextBox.Text); }將不起作用 – user2903379

+0

可能不會。但是我不知道之前做的「姓名」任 – user2903379

回答

1

IsolatedStorageSettings作爲一個詞典。如果你想訪問一個特定的鍵,它應該存在於詞典中。

如果你試圖改變一個已經存在,你可以這樣做值:

if (appSettings.Contains("key")) appSettings["key"] = "new value"; 
else appSettings.Add("key", "new value"); 

也不要忘記保存您的appSettings:

appSettings.Save(); 

而且還可以根據你的代碼 - 在國際空間站你不僅可以把string - 它可以是任何物體,如果你想得到它,你應該做一個演員或使用as

string content = (string)appsettings["name"]; //converts to string 
string content = appsettings["name"] as string; 

編輯 - 評論後,如果您想擁有一個待辦事項列表重建一次

,你知道,每個任務都有其特定的標題,描述和時間,那麼我會建議創建一個特殊的類此,例如:

public class myTodo 
{ 
    public string TaskTitle { get; set; } 
    public string TaskDescription { get; set; } 
    public TimeSpan ElapsedTime { get; set; } 
} 

我用TimeSpan,因爲我覺得它更容易使用它來管理時間。然後,如果你想保存/載入你myTodo,你可以這樣做:

// create an example of your task 
myTodo newTask = new myTodo() { TaskTitle = "Clean", TaskDescription = "Clean room", ElapsedTime = new TimeSpan(2, 0, 0) }; 

// add it to ISS and save 
if (appSettings.Contains("firatTask")) appSettings["firatTask"] = newTask; 
else appSettings.Add("firatTask", newTask); 
appSettings.Save(); 

// try to load 
myTodo read = appSettings["firatTask"] as myTodo; 

你可以這樣訪問您的項目:

read.Title = TitleTextBox.Text; // and so on 

考慮也作出​​並意識到,ISS還建議立即進行刪除處理這個問題:

List<myTodo> listJob = new List<myTodo>(); 
listJob.Add(firstTask); // firstTask is myToDo 
listJob.Add(secondTask); // secondTask is myToDo 

if (appSettings.Contains("listTask")) appSettings["listTask"] = listJob; 
else appSettings.Add("listTask", listJob); 
appSettings.Save(); 

List<myTodo> readList = appSettings["listTask"] as List<myTodo>; 
+0

我不想改變已存在的價值,我希望能夠到用文本塊添加兩個文本框。我希望能有 如果(appsettings.Contains( 「名字」)){ appsettings.Remove( 「名稱」);appsettings.Add(「name」,TitleTextBox.Text); } 和 如果(appsettings.Contains( 「標題」)) { appsettings.Remove( 「標題」); appsettings.Add(「title」,TitleTextBox.Text); //重新命名,如果已經存在 } 同時 – user2903379

+0

等待我的理解工作 - 你想改變的價值 - 如果你刪除它,然後添加相同類型的 - 你正在改變它。我也想知道在兩個地方持有相同價值的目的是什麼,但如果你想在其他地方改變它,可能需要它。 – Romasz

+0

嗨羅馬斯,謝謝你的回答。關鍵是要攜帶兩件物品,比如待辦事項列表。第一個文本框是任務的名稱,第二個文本框是任務的描述,例如Name:「Clean」description:「clean room」。當按鈕被按下並保存到用戶可以查看它。另一個頁面顯示文本塊,它是任務的標題。第二個文本塊包含任務的描述。 – user2903379

相關問題