2012-07-10 58 views
0

有什麼辦法可以簡化這段代碼嗎?或者以任何方式創建另一個頁面的頁面以儘可能保持主頁的清潔。我打算有數百個文本文件,因爲我是一個新手,我不是最好的方法來解決這個問題。我正在嘗試使用Xbox 360成就指南製作應用,但每場比賽的平均成績大約爲40。 (這是文本文件的分配)。WP7我怎樣才能簡化這些代碼或更好的方法?

if (selectedIndex == "0") 
{ 
    var Tutorial = Application.GetResourceStream(new Uri("Resources/Games/MaxPayne3/StoryRelated.txt", UriKind.Relative)); 

    using (Stream Text = Tutorial.Stream) 
    { 
     StreamReader sr = new StreamReader(Text); 
     Guide.Text = "Story Complete [MEDIUM]\n" + Environment.NewLine + sr.ReadToEnd(); 
     Title.Text = "Feel The Payne"; 
     AppBarMenuDisable.IsEnabled = false; 
    } 
} 
else if (selectedIndex == "1") 
{ 
    var Tutorial = Application.GetResourceStream(new Uri("Resources/Games/MaxPayne3/StoryRelated.txt", UriKind.Relative)); 

    using (Stream Text = Tutorial.Stream) 
    { 
     StreamReader sr = new StreamReader(Text); 
     Guide.Text = "Story Complete [HARD]\n" + Environment.NewLine + sr.ReadToEnd(); 
     Title.Text = "Serious Payne"; 
     AppBarMenuDisable.IsEnabled = false; 
    } 
} 
else if (selectedIndex == "2") 
{ 
    var Tutorial = Application.GetResourceStream(new Uri("Resources/Games/MaxPayne3/StoryRelated.txt", UriKind.Relative)); 

    using (Stream Text = Tutorial.Stream) 
    { 
     StreamReader sr = new StreamReader(Text); 
     Guide.Text = "Story Complete [OLD SCHOOL]\n" + Environment.NewLine + sr.ReadToEnd(); 
     Title.Text = "Maximum Payne"; 
     AppBarMenuDisable.IsEnabled = false; 
    } 
} 
else if (selectedIndex == "3") 
{ 
    var Tutorial = Application.GetResourceStream(new Uri("Resources/Games/MaxPayne3/TextFile1.txt", UriKind.Relative)); 

    using (Stream Text = Tutorial.Stream) 
    { 
     StreamReader sr = new StreamReader(Text); 
     Guide.Text = sr.ReadToEnd(); 
     Title.Text = "Payne In The Ass"; 
     AppBarMenuDisable.IsEnabled = false; 
    } 
} 
else if (selectedIndex == "4") 
{ 
    var Tutorial = Application.GetResourceStream(new Uri("Resources/Games/MaxPayne3/StoryRelated.txt", UriKind.Relative)); 

    using (Stream Text = Tutorial.Stream) 
    { 
     StreamReader sr = new StreamReader(Text); 
     Guide.Text = sr.ReadToEnd(); 
     Title.Text = "Part I Complete"; 
     AppBarMenuDisable.IsEnabled = false; 
    } 
} 
else if (selectedIndex == "5") 
{ 
    var Tutorial = Application.GetResourceStream(new Uri("Resources/Games/MaxPayne3/StoryRelated.txt", UriKind.Relative)); 

    using (Stream Text = Tutorial.Stream) 
    { 
     StreamReader sr = new StreamReader(Text); 
     Guide.Text = sr.ReadToEnd(); 
     Title.Text = "Part II Complete"; 
     AppBarMenuDisable.IsEnabled = false; 
    } 
} 
else if (selectedIndex == "6") 
{ 
    var Tutorial = Application.GetResourceStream(new Uri("Resources/Games/MaxPayne3/StoryRelated.txt", UriKind.Relative)); 

    using (Stream Text = Tutorial.Stream) 
    { 
     StreamReader sr = new StreamReader(Text); 
     Guide.Text = sr.ReadToEnd(); 
     Title.Text = "Part III Complete"; 
     AppBarMenuDisable.IsEnabled = false; 
    } 
} 
else if (selectedIndex == "7") 
{ 
    var Tutorial = Application.GetResourceStream(new Uri("Resources/Games/MaxPayne3/TextFile2.txt", UriKind.Relative)); 

    using (Stream Text = Tutorial.Stream) 
    { 
     StreamReader sr = new StreamReader(Text); 
     Guide.Text = sr.ReadToEnd(); 
     Title.Text = "A New York Minute"; 
     AppBarMenuDisable.IsEnabled = false; 
    } 
} 
else if (selectedIndex == "8") 
{ 
    var Tutorial = Application.GetResourceStream(new Uri("Resources/Games/MaxPayne3/TextFile3.txt", UriKind.Relative)); 

    using (Stream Text = Tutorial.Stream) 
    { 
     StreamReader sr = new StreamReader(Text); 
     Guide.Text = sr.ReadToEnd(); 
     Title.Text = "The Shadows Rushed Me"; 
     AppBarMenuDisable.IsEnabled = false; 
    } 
} 
else if (selectedIndex == "9") 
{ 
    var Tutorial = Application.GetResourceStream(new Uri("Resources/Games/MaxPayne3/TextFile4.txt", UriKind.Relative)); 

    using (Stream Text = Tutorial.Stream) 
    { 
     StreamReader sr = new StreamReader(Text); 
     Guide.Text = sr.ReadToEnd(); 
     Title.Text = "Out The Window"; 
     YouTubeLink.URL = "http://www.youtube.com/watch?v=lRg6ygA-M_Y"; 
    } 
} 

我很想有這樣的文字在互聯網上的某個地方文件,根據需要,用戶可以檢索它們。

+2

你可能要考慮在此發佈: http://codereview.stackexchange.com/ 可能會得到一些額外的建議。 – sacredfaith 2012-07-10 21:01:38

回答

0

你太過複雜了。如果你真的想把所有的數據與應用程序捆綁在一起,你可以使用serialize it to XMLJSON,然後在內部反序列化它。

這也爲您的代碼增加了靈活性,因爲直接使用像您這樣的硬編碼值可能會在您決定添加更改時在長時間內造成一些麻煩。

+0

我很想在網上有一個json文件,但不要在哪裏以及如何檢索到我的應用程序。 – iamrelos 2012-07-11 06:31:08

+0

你可以在任何地方託管它(有很多選擇),然後你可以使用類似WebClient的東西(http://msdn.microsoft.com/en-US/library/system.net.webclient(v=vs.95) .aspx)來獲取它。 – 2012-07-11 16:13:21

0

IST只與匿名結構一個例子,你也可以使用XML + LINQ

var actions = new[] 
{ 
new { 
    index = 0, 
    uri = "Resources/Games/MaxPayne3/StoryRelated.txt", 
    guide = "Story Complete [MEDIUM]\n\n", 
    title = "Feel The Payne", 
    appBar = false, 
    youtube = "" 
}, 

new { 
    index = 7, 
    uri = "Resources/Games/MaxPayne3/TextFile2.txt", 
    guide = "", 
    title = "A New York Minute", 
    appBar = false, 
    youtube = "" 
}, 

new { 
    index = 9, 
    uri = "Resources/Games/MaxPayne3/TextFile4.txt", 
    guide = "", 
    title = "Out The Window", 
    appBar = true, 
    youtube = "http://www.youtube.com/watch?v=lRg6ygA-M_Y" 
}, 
}; 

var actionQuery = actions.Where(a => a.index == selectedIndex).ToArray(); 

if (actionQuery.Length == 0) throw new Exception("Index not found: " + selectedIndex); 
if (actionQuery.Length > 1) throw new Exception("Duplicate entries found: " + selectedIndex); 

var action = actionQuery[0]; 

var Tutorial = Application.GetResourceStream(new Uri(action.uri, UriKind.Relative)); 

using (Stream Text = Tutorial.Stream) 
{ 
StreamReader sr = new StreamReader(Text); 
Guide.Text = action.guide + sr.ReadToEnd(); 
Title.Text = action.title; 
AppBarMenuDisable.IsEnabled = action.appBar; 
if (action.youtube != "") YouTubeLink.URL = action.youtube; 
} 
0

你應該填充ListBox(我猜它是一個列表框)與實際的類擴展這個

public class Tutorial 
{ 
    public string Location { get; set; } 
    public string Title { get; set; } 
    public string Prefix { get; set; } 
} 

使用這個類,用這些類填充ListBox。最好是以xml/json格式列出這個列表,或者更好地從網頁抓取。

List<Tutorial> tutorials = new List<Tutorial() 
{ 
    new Tutorial 
    { 
     Location = "Resources/Games/MaxPayne3/StoryRelated.txt", 
     Title = "Feel the Payne", 
     Prefix = "Story Complete [MEDIUM]\n" 
    } 
    // add more 
}; 
ListBox.ItemsSource = tutorials; // better to do binding to this property 

然後在SelectionChanged事件

Tutorial tutorial = ListBox.SelectedItem as Tutorial; 
if(tutorial == null) return; 

var item = Application.GetResourceStream(new Uri(tutorial.Location, UriKind.Relative)); 

using (Stream Text = Tutorial.Stream) 
{ 
    StreamReader sr = new StreamReader(Text); 
    Guide.Text = tutorial.Prefix + sr.ReadToEnd(); 
    Title.Text = tutorial.Tile; 
    AppBarMenuDisable.IsEnabled = false; 
} 
相關問題