关于定位器

时间:2016-01-06 16:41:32

标签: c# wpf data-binding viewmodellocator

这可能是一个愚蠢的问题,但我似乎无法弄清楚问题。

我有一个WPF项目,我想重命名它并开始做mercurial重构。

总而言之,它似乎已经做得很好唯一的问题是我的用于viewmodel的datacontext似乎搞砸了。

其中一个页面的示例是这样的

<Page x:Class="Cirdan.Excite.Views.ViewerPage"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  xmlns:controls="clr-namespace:Cirdan.Excite.Controls"
  xmlns:infrastructure="clr-namespace:Cirdan.Excite.Infrastructure"
  DataContext="{Binding ViewerViewModel, Source={x:Static infrastructure1:MainWindow.LocatorX}}"
  mc:Ignorable="d"
  d:DesignHeight="1024" d:DesignWidth="1280"
  Title="Viewer">

我得到的错误是LocatorX既不存在也不可访问。但是我可以访问我的ViewModel的源代码和定义我的LocatorX的位置,以便它知道它们并且LocatorX是公共的。

这在重命名之前一切正常,所以它以某种方式链接到它

1 个答案:

答案 0 :(得分:0)

虽然我理解你的问题,但你不清楚你究竟在问什么。

这些是我要做的步骤:

  • 首先进行蛮力检查。也就是说,查看每个类和XAML(以及任何代码隐藏)并确保<name-of-item>的所有实例都是正确的。还要确保使用的命名空间是正确的。

  • 更正任何错误值后,清理重建您的项目。

  • 如果它仍然给你一个错误,你可以重新启动visual studio(或WPF设计师)。

我之前遇到过一些有趣的问题,一旦需要验证我的程序集都是针对正确的目标平台构建的。

如果仍然无法使其正常工作,请创建一个干净的项目并将代码合并在一起。