我在一个视图模型中有一个公共变量,我希望能够从另一个视图代码隐藏中访问(获取和设置)。我有一个 MainWindowViewModel 和一个 SettingsViewModel。我希望能够访问此变量的代码隐藏已经具有 MainWindowViewModel 的 DataContext 定义,我认为这可能是问题所在,因为据我所知,我无法为同一个视图定义两个 DataContext。
例如,SettingsViewModel 有一个名为 LowerLimit 的变量,我已将其绑定到 NumericUpDown 的选定值。我初始化了一个变量以将 DataContext 保存为 SettingsViewModel,以便我可以访问该 ViewModel 中的变量。我用代码做到了这一点
var settingsContext = DataContext as SettingsViewModel;
但由于某种原因,这会抛出一个 NullRefereceException,说 settingsContext 是空的。
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 从 SettingsViewModel 获取 DataContext,允许我从 MainWindow.xaml.cs 访问 LowerLimit 变量并将其分配给局部变量。
实际结果:NullReferenceException,settingsContext 为 null