【问题标题】:WPF Visibility Issue Windows Server 2003WPF 可见性问题 Windows Server 2003
【发布时间】: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 转换器更新了我的帖子

标签: c# wpf xaml mvvm telerik


【解决方案1】:

您在您的开发机器上使用不同版本的 .NET (4.5),这只是模拟 4.0 版本。事实证明,这两个版本之间存在一些不兼容(即使您将 4.0 降级,也不会出现在 4.5 中修复的错误)。

在我使用 .NET 4.0(您在 2003 服务器上使用)时,我发现 StaticResource 有时会在 DataTemplates 中出现故障。这个问题在 4.5 版本中得到了修复,所以这就是你没有遇到这些问题的原因。你应该改变:

编辑:以下不起作用,因为 Converter 不是依赖属性。

Visibility="{Binding ShowSearch, Converter={StaticResource Bvc}}"

Visibility="{Binding ShowSearch, Converter={DynamicResource Bvc}}"

【讨论】:

  • 收到以下消息:“只能在 DependancyObject 的 DependancyProperty 上设置‘DynamicResourceExtension’”。有什么想法吗?
  • 看来你不能这样做,因为Converter on binding不是依赖属性。我唯一的建议是尝试在未安装 4.5 的新机器上的调试器中运行它(为此需要 vs2010)并检查错误。
猜你喜欢
  • 1970-01-01
  • 2012-05-31
  • 1970-01-01
  • 1970-01-01
  • 2013-12-21
  • 2011-08-10
  • 2010-12-25
  • 2012-05-11
  • 2020-07-03
相关资源
最近更新 更多