Передача значения checkBox страницы в другой класс - PullRequest
1 голос
/ 14 декабря 2010

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

Мой пример:

У меня есть этот checkBox1 на моей главной странице. Xaml

 <CheckBox Content="Central WC / EC" Height="68" HorizontalAlignment="Left" Margin="106,206,0,0" Name="checkBox1" VerticalAlignment="Top" BorderThickness="0" />

У меня есть другой page.xaml с его c # на anotherpage.xaml.cs:

 public void Feed(object Sender, DownloadStringCompletedEventArgs e)
    {
        if (checkBox1.Checked("SE" == (_item.Sector))) ; 
        {

        }
     }

Как передать значение checkBox1 на mainpage.xaml в другой page.xaml.cs

Ответы [ 2 ]

1 голос
/ 15 декабря 2010

Вы можете указать, установлен ли флажок при открытии следующей страницы:

NavigationService.Navigate(new Uri("/AnotherPage.xaml?chkd=" + checkBox1.IsChecked, UriKind.Relative));

Затем вы можете запросить это в событии OnNavigatedTo на «другой» странице:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    string isChecked;
    if (NavigationContext.QueryString.TryGetValue("chkd", out isChecked))
    {
        if (bool.Parse(isChecked))
        {
            //
        }
    }
}

Редактировать:
Чтобы передать несколько значений, просто добавьте их в строку запроса:

NavigationService.Navigate(new Uri("/AnotherPage.xaml?chk1=" + checkBox1.IsChecked + "&chk2=" + checkBox2.IsChecked, UriKind.Relative));

(Возможно, вы захотите отформатировать код немного лучше)

Затем вы можете получить каждый параметр по очереди из

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    string is1Checked;
    if (NavigationContext.QueryString.TryGetValue("chk1", out is1Checked))
    {
        if (bool.Parse(is1Checked))
        {
            //
        }
    }

    string is2Checked;
    if (NavigationContext.QueryString.TryGetValue("chk2", out is2Checked))
    {
        if (bool.Parse(is2Checked))
        {
            //
        }
    }
}

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

var checks = string.Format("{0}|{1}", checkBox1.IsChecked, checkBox2.IsChecked);

NavigationService.Navigate(new Uri("/AnotherPage.xaml?chks=" + checks, UriKind.Relative));

Затем можно разбить строку и разобрать части по отдельности.

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

Вы можете объявить публичное свойство в классе App.

public partial class App : Application
{
    public int Shared { set; get; }
    //...
}

Затем вы можете получить к нему доступ со страниц через:

(Application.Current as App).Shared

Вы можете сохранить ссылку на форму или поместить событие или что-либо еще, что вы хотите сделать.

С другой стороны, я настоятельно рекомендую Книгу WP7 Петцольда, которую можно бесплатно загрузить .

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