0

このコードを単純化する方法はありますか?または、クラスページの別のページを作成して、メインページをできるだけきれいに保つ方法。私は何百ものテキストファイルを用意することを計画していますが、私は初心者なので、これに取り組む最善の方法ではありません。Xbox 360アチーブメントガイドを使用してアプリを作成しようとしていますが、各ゲームの平均アチーブメント数は約40です。(それはテキストファイルの割り当てです)。

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";
    }
}

ユーザーが必要に応じて取得できるので、このテキストファイルをインターネットのどこかに置きたいと思います。

4

3 に答える 3

0

ListBox(ListBoxだと思います)に実際のクラスを入力する必要があります

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

このクラスを使用して、ListBoxにこれらのクラスを入力します。このリストはxml/json形式にするか、Webから取得するのが最適です。

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;
}
于 2012-07-10T21:30:13.527 に答える
0

匿名構造体の例だけでなく、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;
}
于 2012-07-10T21:25:13.743 に答える
0

あなたは物事を複雑にしすぎています。本当にすべてのデータをアプリケーションにバンドルしたい場合は、それをXMLまたはJSONにシリアル化してから、内部で逆シリアル化することができます。

これにより、コードに柔軟性が追加されます。これは、ハードコードされた値を直接操作する場合と同様に、変更を追加することを決定したときに、長期的には問題が発生する可能性があるためです。

于 2012-07-10T21:18:34.357 に答える