我目前正在.NET v4.0中开发一个WPF应用程序。
我有两个网格,根据我的ViewModel中的属性显示为隐藏的:
<Grid Name="Results" Grid.Column="1" Visibility="{Binding ShowSearch, Converter={StaticResource Bvc}}">
<Grid Name="ProvisionalStreet" Grid.Column="1" Visibility="{Binding ShowProvisional, Converter={StaticResource Bvc}}">
当用户单击按钮时,DelegateCommand会执行以下操作:
this.ShowProvisional = true;
this.ShowSearch = false;
显示临时设置:
set
{
this.showProvisional = value;
this.RaisePropertyChanged(() => this.ShowProvisional);
}
ShowSearch设置程序:
set
{
this.showSearch = value;
this.RaisePropertyChanged(() => this.ShowSearch);
}
该代码在Visual Studio 2012中的本地计算机(Windows 7)上运行良好,或者在构建目录中双击可执行文件时运行良好。然而,我们的测试人员正在登录Citrix,这是一个Windows Server 2003环境,当他们单击按钮时,什么都不会发生。
然而,例如,如果我将Visibility="{Binding ShowProvisional, Converter={StaticResource Bvc}}"
分配给标签或文本框,它对它们有效。
有什么想法吗?与WindowsServer2003的WPF问题几乎相同,但没有给出答案。
非常感谢
编辑:
<BooleanToVisibilityConverter x:Key="Bvc" />
编辑:
[ImportingConstructor]
public GazetteerView(GazetteerViewModel viewModel)
: this()
{
this.DataContext = viewModel;
}
您在开发机器上使用不同版本的.NET(4.5),这只是对4.0版本的恢复。事实证明,这两个版本之间存在一些不兼容之处(在4.5中修复的错误即使在4.0下目标时也不会发生)
在我使用.NET 4.0(您正在2003服务器上使用它)的过程中,我发现StaticResource
有时会在DataTemplates
中出现故障。这个问题在4.5版本中得到了修复,所以这就是为什么你没有遇到这些问题。您应该更改:
EDIT:由于Converter不是依赖属性,因此以下操作不起作用
Visibility="{Binding ShowSearch, Converter={StaticResource Bvc}}"
至
Visibility="{Binding ShowSearch, Converter={DynamicResource Bvc}}"