Доступ к списку MainWindow из другого окна (Защита) - PullRequest
0 голосов
/ 07 февраля 2020

У меня есть этот код здесь из MainWindow.xaml.cs в приложении WPF

public partial class MainWindow : Window
{

    animaciones.Preferences Preferences;
    animaciones.GameOver GameOver;
    ObservableCollection<Figura> listafiguras = new ObservableCollection<Figura>();
    System.Media.SoundPlayer player = new System.Media.SoundPlayer();
    DispatcherTimer timer;
    Raton raton;

    public MainWindow()
    {
        InitializeComponent();
        Preferences = new animaciones.Preferences();
        GameOver = new animaciones.GameOver();
        raton = new Raton();
        player.SoundLocation = "lostwoods.wav";
        Canvas.SetLeft(raton.fig, raton.x);
        Canvas.SetBottom(raton.fig, raton.y);
        lienzo.Children.Add(raton.fig);

        this.KeyDown += new KeyEventHandler(KeyDownEventos);

        timer = new DispatcherTimer();
        timer.Tick += OnTick;
        timer.Interval = new TimeSpan(0, 0, 0, 0, 50);


    }

Я хочу использовать ObservableCollection "listafiguras" в другом xaml.cs, например:

 public partial class Preferences : Window
{


    public Preferences()
    {
        InitializeComponent();
        tabla.ItemsSource = MainWindow.listafiguras;
    }

Но в нем говорится, что MainWindow недоступен из-за уровня защиты. Как я могу изменить это, чтобы дать доступ к моей переменной? Спасибо

1 Ответ

1 голос
/ 07 февраля 2020

listafiguras является частным для вашего класса MainWindow и, следовательно, недоступен для чего-либо за пределами Mainwindow. Возможно, вы можете передать этот список в качестве параметра конструктора в Предпочтения:

public Preferences(ObservableCollection<Figura> figuraList)
    {
        InitializeComponent();
        tabla.ItemsSource = figuraList;
    }

В MainWindow:

Preferences = new animaciones.Preferences(listafiguras );

Однако я предлагаю вам изучить использование сервисов и структур DI для обмена данными между представлениями. для более общего решения этого типа проблемы (см. Что такое «службы WPF»? )

...