【发布时间】:2013-07-02 12:57:25
【问题描述】:
我目前正在.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}}" 分配给标签或文本框,例如它适用于它们。
有什么想法吗?与WPF issues with Windows Server 2003 几乎相同的问题,但没有给出答案。
非常感谢
已编辑:
<BooleanToVisibilityConverter x:Key="Bvc" />
已编辑:
[ImportingConstructor]
public GazetteerView(GazetteerViewModel viewModel)
: this()
{
this.DataContext = viewModel;
}
【问题讨论】:
-
好吧,也许不相关,但你的
RaisePropertyChanged看起来怎么样? “但是,如果我分配Visibility="..."”是什么意思? -
@Andrew Rayner,我是第二个 Jeff 的 RaisePropertyChanged 请求 - 请提供。另外,我们可以看看 Bvc 转换器的代码吗?
-
我在 XP 上使用 WPF 的经验让我认为这是视频适配器的系统/驱动程序的错误。可能不相关但你可以试试:support.microsoft.com/kb/955692
-
我继承自 Prism 的 NotificationObject,它包含 RaisePropertyChanged() 方法。
-
@zaitsman 我已经用 Bvc 转换器更新了我的帖子