2012-07-10 56 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; 
} 
相关问题