У меня есть открытая переменная в одной модели представления, к которой я хочу получить доступ (получить и установить) из другого кода кода сзади.У меня есть MainWindowViewModel и SettingsViewModel.Кодовый код, к которому я хочу иметь доступ к этой переменной, уже имеет определение DataContext для MainWindowViewModel, что, я думаю, может быть проблемой, поскольку, насколько я знаю, я не могу определить два DataContext для одного и того же представления.
В качестве примера, SettingsViewModel имеет переменную с именем LowerLimit, которую я связал с выбранным значением NumericUpDown.Я инициализировал переменную для хранения DataContext как SettingsViewModel, чтобы я мог получить доступ к переменной в этом ViewModel.Я сделал это с кодом
var settingsContext = DataContext as SettingsViewModel;
Но по какой-то причине это выдает исключение NullRefereceException, говоря, что settingsContext имеет значение null.
SettingsViewModel.cs:
public double[] LowerLimit { get; set; } = { 0, 0, 0, 0 }; //LowerLimit NumericUpDown
MainWindow.xaml.cs:
public MainWindow()
{
InitializeComponent();
DataContext = new MainWindowViewModel();
}
private void Run_Clicked(object sender, RoutedEventArgs args) //Button click event
{
...
var settingsContext = DataContext as SettingsViewModel;
lowerLimitCol = (int)settingsContext.LowerLimit[generalIndex];
}
Я предоставил только соответствующий код проблемы.Если я ошибаюсь, и для ответа на вопрос требуется больше кода, я могу предоставить его.
Ожидаемый результат: settingsContext получает DataContext из SettingsViewModel, что позволяет мне получить доступ к переменной LowerLimit из MainWindow.xaml.cs и назначить ее.в локальную переменную.
Фактический результат: NullReferenceException, settingsContext был нулевым