Установка строковых значений на страницах в приложении WP7 - PullRequest
0 голосов
/ 19 декабря 2010

Я постараюсь объяснить это, не говоря слишком много о конкретном содержании и цели приложения.Я просто скажу, что на главной странице есть 3 пустых «слота» для предметов, которые вы можете выбрать, чтобы занять их.Когда вы нажимаете на одну из них, вы переходите на отдельную страницу, которая позволяет вам выбрать конкретный элемент для этого слота.Вот код, который лучше объяснить:

  <TextBlock Text="{Binding FirstSelectionName}" />
  <TextBlock Text="{Binding FirstSelectionType}" />
  <HyperlinkButton Content="Choose First Option" 
                   Name="firstHyperLink" 
                   NavigateUri="/Pages/FirstChoices.xaml" 
                   />

  <TextBlock Text="{Binding SecondSelectionName}" />
  <TextBlock Text="{Binding SecondSelectionType}" />
  <HyperlinkButton Content="Choose Second Option" 
                   Name="secondHyperLink" 
                   NavigateUri="/Pages/SecondChoices.xaml" 
                   />

  <TextBlock Text="{Binding ThirdSelectionName}" />
  <TextBlock Text="{Binding ThirdSelectionType}" />
  <HyperlinkButton Content="Choose Third Option" 
                   Name="thirdHyperLink" 
                   NavigateUri="/Pages/ThirdChoices.xaml" 
                   />

Вот код этой страницы XAML:

 public class FirstSelection
    {
        public string FirstSelectionName { get; set; }
        public string FirstSelectionType { get; set; }            
    }

 public class SecondSelection
    {
        public string SecondSelectionName { get; set; }
        public string SecondSelectionType { get; set; }            
    }

 public class ThirdSelection
    {
        public string ThirdSelectionName { get; set; }
        public string ThirdSelectionType { get; set; }            
    }

На страницах выбора файл XML циклично повторяется и сохраняется в новомэкземпляры класса.Когда пользователь выбирает определенную опцию из этого списка нажатием кнопки, я хочу установить соответствующий слот на главной странице, равный этому выбору.Вот пример первой страницы выбора слотов:

<ListBox Name="firstOptionsList">                
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Button BorderThickness="3"
                            Click="setSelectedToFirst">                            
                        <StackPanel Orientation="Vertical">
                            <TextBlock Name="nameTextBlock" 
                                       Text="{Binding Name}" 
                                       />
                            <TextBlock Name="typeTextBlock" 
                                       Text="{Binding Type}" 
                                       /> 
                        </StackPanel>
                    </Button>                        
                </DataTemplate>
            </ListBox.ItemTemplate>
  </ListBox>

И, наконец, код для страницы выбора:

public FirstOptionsPage()
    {
        InitializeComponent();            

        Dispatcher.BeginInvoke((Action)(() => firstList.ItemsSource = firstdata));

        WebClient firstWebClient = new WebClient();

        firstWebClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(first_DownloadStringCompleted);
        firstWebClient.DownloadStringAsync(new Uri("http://www.website.com/firstoptions.xml"));
    }


    void first_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
    {
        if (e.Error != null)
            return;

        XElement xmlitem = XElement.Parse(e.Result);

        var firstdata = new List<FirstOptionsClass>();

        foreach (XElement item in xmlitem.Elements("entry"))
        {
            var name = item.Element("name");
            var namevalue = (name == null) ? null : name.Value;
            var type = item.Element("type");
            var typevalue = (type == null) ? null : type.Value;              

            firstdata.Add
                (new FirstOptionsClass
                    {
                        Name = namevalue,
                        Type = typevalue,                           
                    }
                );
        }

        firstList.ItemsSource = firstdata;
    }

    public class FirstOptionsClass
    {
        public string Name { get; set; }
        public string Type { get; set; }            
    }

    public System.Collections.IEnumerable firstdata { get; set; }

    private void setSelectedToFirst(object sender, RoutedEventArgs e)
    {
        //THIS IS THE PART WHERE I'M NOT SURE HOW TO SET FirstOptionsClass Name = FirstSelectionName on the MainPage.xaml
    }

См. Строку комментария в событии click для моего основногопроблема.Как мне установить эти значения равными друг другу на этих страницах?Я знаю, что это может выглядеть как беспорядок здесь, поэтому я ценю помощь.

1 Ответ

0 голосов
/ 19 декабря 2010

TBH Я не уверен, что вы хотите сделать.Что запускает setSelectedToFirst?

В любом случае, чтобы сохранить некоторые данные и прочитать их во время цикла приложения, вы можете использовать IsolatedStorageSettings .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...