Windows Template Studio MVVMLight 从详细信息页面访问 ViewModel
Windows Template Studio MVVMLight accessing ViewModel from Details page
我正在使用 Windows Template Studio V3.0,使用实现 Master/Detail 页面的 MVVMLight 创建 UWP 应用程序。我确定我会自责,但我不知道如何从“详细信息”页面访问 ViewModel。我需要访问视图模型上的 属性 来设置某些 XAML 元素的可见性。
在以前的 WTS 版本中,我可以使用定位器访问 ViewModel,如下所示:
<TextBlock
Margin="8"
Text="{x:Bind MasterMenuItem.Name , Mode=OneWay}"
Style="{StaticResource BodyTextBlockStyle}"
Visibility="{Binding Source={StaticResource Locator}, Path=DriverDetailsViewModel.EditMode, Converter={StaticResource InverseBoolToVisibilityConverter}}" />
在 WTS 的 V3 中,定位器的实现已更改并且似乎无法作为静态资源访问?
正如我所怀疑的,在进一步研究 WTS 代码后,我意识到我可以从 XAML 代码隐藏访问 ViewModelLocator。我只需要将以下内容添加到我的 detailsview 代码隐藏中:
private DriverDetailsViewModel ViewModel
{
get { return ViewModelLocator.Current.DriverDetailsViewModel; }
}
然后下面的XAML有效
Visibility="{x:Bind ViewModel.IsEditMode, Mode=OneWay, Converter={StaticResource InverseBoolToVisibilityConverter}}"
我正在使用 Windows Template Studio V3.0,使用实现 Master/Detail 页面的 MVVMLight 创建 UWP 应用程序。我确定我会自责,但我不知道如何从“详细信息”页面访问 ViewModel。我需要访问视图模型上的 属性 来设置某些 XAML 元素的可见性。
在以前的 WTS 版本中,我可以使用定位器访问 ViewModel,如下所示:
<TextBlock
Margin="8"
Text="{x:Bind MasterMenuItem.Name , Mode=OneWay}"
Style="{StaticResource BodyTextBlockStyle}"
Visibility="{Binding Source={StaticResource Locator}, Path=DriverDetailsViewModel.EditMode, Converter={StaticResource InverseBoolToVisibilityConverter}}" />
在 WTS 的 V3 中,定位器的实现已更改并且似乎无法作为静态资源访问?
正如我所怀疑的,在进一步研究 WTS 代码后,我意识到我可以从 XAML 代码隐藏访问 ViewModelLocator。我只需要将以下内容添加到我的 detailsview 代码隐藏中:
private DriverDetailsViewModel ViewModel
{
get { return ViewModelLocator.Current.DriverDetailsViewModel; }
}
然后下面的XAML有效
Visibility="{x:Bind ViewModel.IsEditMode, Mode=OneWay, Converter={StaticResource InverseBoolToVisibilityConverter}}"