У меня есть опыт работы с devel UWP и структурой кода.
Я новичок в дизайне MVVM, и я разрабатываю приложение UWP с шаблоном, MVVM Basic.
Я разрабатываю простое приложение, которое генерирует числа для лото. Чтобы помочь пониманию, я разместил свое изображение в приложении.
Я реализовал с ViewModel с главной страницы. ниже мой источник.
На главной странице. Xaml
<ListView ItemsSource="{x:Bind ViewModel._display_game, Mode=OneWay}">
<ListView.ItemTemplate>
<DataTemplate x:DataType="TextBlock">
<TextBlock Text="{x:Bind Text,Mode=OneWay}"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<Button Grid.Column="1" Grid.Row="1" Content="Click Me" Command="{x:Bind ViewModel.game_create}"/>
MainPage.cs
public sealed partial class MainPage : Page
{
public MainViewModel ViewModel { get; } = new MainViewModel();
public MainPage()
{
DataContext = ViewModel;
InitializeComponent();
}
}
MainViewModel.cs
public class MainViewModel : Observable
{
public ObservableCollection<TextBlock> _display_game { get; set; }
private int[] game;
public MainViewModel()
{
game_create = new RelayCommand(ExecuteClick);
}
private void ExecuteClick()
{
{ //generating 6 random value
_display_game = new ObservableCollection<TextBlock>();
game = new int[6];
Random random = new Random(DateTime.Now.Millisecond);
for (int t = 0; t < 6; t++)
{
bool[] check = new bool[46];
_display_game.Add(new TextBlock());
int dup = 0;
int cnt = 0;
while (cnt < 6)
{
int tmp = random.Next(1, 46);
if (check[tmp] == false)
{
check[tmp] = true;
game[cnt] = tmp;
cnt++;
//_display_game[t].Text += $"{tmp} ";
}
else dup++;
}
Array.Sort(game);
_display_game[t].Text += string.Format("{0} 게임 : ", t+1);
for (int i = 0; i < 6; i++) _display_game[t].Text += $"{game[i]} ";
}
}
OnPropertyChanged("_display_game");
}
public RelayCommand game_create { get; set; }
}
и вопрос здесь. насколько я знаю, ViewModel является частью View. Итак, я переместился на страницу, элементы списка были обновлены (я имею в виду, что они исчезли). но я хочу сделать их живыми, что бы ни делал пользователь, кроме того, что пользователь нажимает свежую кнопку.
Я хочу, чтобы мои данные были доступны, даже если я не на странице и не возвращаюсь. и я хочу использовать эти данные также на другой странице.
когда я делаю код позади (я думаю, что у меня нет никакого шаблона раньше), я помещаю любые коды в любое место, чтобы достичь своей цели. если я хочу использовать данные этой страницы на другой странице, я просто передал список в качестве параметров перегруженному методу OnNavigated другой страницы.
но я новичок в MVVM и часто боюсь, что нарушу правила MVVM. поэтому я отправляю этот вопрос.
Извините за длинный вопрос.