#xaml #uwp
#xaml #uwp
Вопрос:
Я пытался получить cartTitleList amp; cartPriceList главной страницы, чтобы переместить значения в Page3 cartTitle1.Text amp; cartPrice1.Текст, но каждый раз, когда я пытаюсь, значения в списках Page3 имеют значение null
Я пробовал
параметризованные
методы свойств конструкторов
Главная страница.CS (этот текущий использует метод как способ передачи данных)
List<string> cartTitleList = new List<string>();
List<string> cartPriceList = new List<string>() { "0", "0" };
private void Button_Click_1(object sender, RoutedEventArgs e)
{
cartTitleList.Add("Test1");
cartTitleList.Add("Test2");
cartPriceList.Add("Test3");
cartPriceList.Add("Test4");
bool i = cartTitleList.Contains("Test1");
if (i == true)
{
Page3 cartDetails = new Page3();
cartDetails.Datainput(cartTitleList, cartPriceList);
this.Frame.Navigate(typeof(Page3));
}
}
Страница 3.CS
List<string> cartTitleListDisplay = new List<string>();
List<string> cartPriceListDisplay = new List<string>();
public void Datainput(List<string> testList1, List<string> testList2)
{
cartTitleListDisplay = testList1;
cartPriceListDisplay = testList2;
}
private void Back_Click(object sender, RoutedEventArgs e)
{
BuyChange();
}
Это были ошибки исключения Null (Null в списке)
private void BuyChange()
{
cartTitle1.Text = cartTitleListDisplay[0];
cartPrice1.Text = cartPriceListDisplay[0];
}
Комментарии:
1. Как это связано с UML? Больше похоже на возможное сообщение об ошибке для какого-либо инструмента Mickeysoft?
2. Я удалил тег UML
3. @qwerty_so Это моя ошибка, я должен был написать UWP
Ответ №1:
Frame.navigate(typeof())
Метод перейдет к новому экземпляру Page3
, а не к экземпляру, который вы создали. Вот почему вы получаете нулевое значение в Page3
. Page3
Экземпляр, который вы видите, не тот, который вы создали.
Как правило, мы используем Frame .Метод Navigate(Type, Object) для передачи параметров между страницами.
Вы можете создать небольшой класс, включающий все ваши параметры, и передать экземпляр класса, например:
MainPage.xaml.cs
public sealed partial class Parameters
{
public List<string> cartTitleList { get; set; }
public List<string> cartPriceList { get; set; }
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
cartTitleList.Add("Test1");
cartTitleList.Add("Test2");
cartPriceList.Add("Test3");
cartPriceList.Add("Test4");
bool i = cartTitleList.Contains("Test1");
if (i == true)
{
Page3 cartDetails = new Page3();
//cartDetails.Datainput(cartTitleList, cartPriceList);
Parameters myParameters = new Parameters();
myParameters.cartPriceList = cartPriceList;
myParameters.cartTitleList = cartTitleList;
this.Frame.Navigate(typeof(Page3), myParameters);
}
}
Page3.xaml.cs
static List<string> cartTitleListDisplay = new List<string>();
static List<string> cartPriceListDisplay = new List<string>();
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
var parameters = (Parameters)e.Parameter;
cartTitleListDisplay = parameters.cartTitleList;
cartPriceListDisplay = parameters.cartPriceList;
}
private void Back_Click(object sender, RoutedEventArgs e)
{
BuyChange();
}
private void BuyChange()
{
cartTitle1.Text = cartTitleListDisplay[0];
cartPrice1.Text = cartPriceListDisplay[0];
}