Windows应用商店和WPF应用设计人员对同一视图模型的不同行为

时间:2013-03-31 21:35:22

标签: wpf xaml winrt-xaml designer

我正在使用MVVP模式来共享Windows Store(又名Metro)和WPF应用程序之间的大部分代码。其中一个控件的可见性由视图模型成员的状态控制:

Visibility="{Binding Path=IsServiceSelected, 
            Mode=TwoWay, 
            Converter={StaticResource BoolToVisibility}}" 

属性“IsServiceSelected”在数据上下文后面的视图模型上定义。我有一个假视图模型,其中一些数据仅供设计人员使用。此假模型中的属性IsServiceSelected被评为“true”(此属性没有成员字段,它是基于其他数据计算的)。这适用于WPF应用程序,我看到控件的可见性是可见的。但对于Windows应用商店应用,控件的可见性始终在设计时折叠,仅在运行时才能正确评估。

如果我使用 ConverterParameter = True 扩展XAML定义,则控件会显示,因此显然“IsServiceSelected”的值未正确计算。但奇怪的是,我为我的模型,视图模型和特定的假视图模型共享相同的代码(在可移植类库中),因此应该在不同平台上评估相同的值。但事实并非如此。

UPDATE 错误警报,问题出在我的代码上。固定的。

1 个答案:

答案 0 :(得分:1)

转换器可能导致不同的行为,因为设置ConverterParameter=True使其在Windows应用商店应用中也能正常工作。您显然无法在WPF和Windows应用商店应用中使用相同的转换器,因为它们必须实现不同的接口。

比较两种实现方式,您应该能够发现差异。对于Windows应用商店应用实现,请特别检查parameter方法的Convert参数的使用方式。将其设置为true似乎会更改返回值。