我正在使用 MVVP 模式在 Windows Store(又名 Metro)和 WPF 应用程序之间共享大部分代码。其中一个控件的可见性由视图模型成员的状态控制:
Visibility="{Binding Path=IsServiceSelected,
Mode=TwoWay,
Converter={StaticResource BoolToVisibility}}"
属性“IsServiceSelected”在数据上下文后面的视图模型上定义。我有一个假的视图模型,其中包含一些仅供设计师使用的数据。此假模型中的属性 IsServiceSelected 被评估为“true”(此属性没有成员字段,它是根据其他数据计算的)。这适用于 WPF 应用程序,我看到控件的可见性是可见的。但对于 Windows 应用商店应用程序,控件的可见性始终在设计时折叠,仅在运行时对其进行正确评估。
如果我使用ConverterParameter=True扩展 XAML 定义,则会显示控件,因此显然“IsServiceSelected”的值未正确评估。但奇怪的是,我为我的模型、视图模型和特定的假视图模型共享相同的代码(在可移植类库中),因此它应该在不同平台上被评估为相同的值。但事实并非如此。
更新误报,问题出在我的代码上。固定的。