我在业余时间开发了一个UWP项目,以获得UWP,MVVM和Prism。该项目最初非常经典,没有使用MVVM和Prism,我一直在努力将这两个项目纳入项目。我一直依靠https://msdn.microsoft.com/en-us/library/gg405484(v=pandp.40).aspx,https://msdn.microsoft.com/en-us/library/gg405494(v=pandp.40).aspx和https://msdn.microsoft.com/en-us/library/ff921098(v=pandp.40).aspx来完成它。
一些背景:我最初有一个从我的Mainpage.xaml
到MainPage.xaml.cs
代码隐藏的直接函数调用,但在转换到MVVM和单独的用户控件期间,我删除了该函数调用,以便稍后使用命令绑定。删除之后,我在GameRouletteView.g.i.cs中出现了一个错误,该错误是此删除的函数调用的残余,其中g.i.cs文件假定它仍然绑定。我重建了我的项目,那些g.i.cs文件显然被删除了。
我在Usercontrol View中添加了以下行,以便添加我的ViewModel:
xmlns:gameRoulette="using:GameRoulette.DesignViewModels"
xmlns:prism="using:Prism.Windows.Mvvm"
d:DataContext="{d:DesignInstance gameRoulette:GameRouletteDesignViewModel, IsDesignTimeCreatable=True}"
prism:ViewModelLocator.AutoWireViewModel="True"
完整代码:
<UserControl
x:Class="GameRoulette.Views.GameRouletteView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:GameRoulette.Views"
xmlns:gameRoulette="using:GameRoulette.DesignViewModels"
xmlns:prism="using:Prism.Windows.Mvvm"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300"
d:DesignWidth="400"
d:DataContext="{d:DesignInstance gameRoulette:GameRouletteDesignViewModel, IsDesignTimeCreatable=True}"
prism:ViewModelLocator.AutoWireViewModel="True">
<Grid Background="White">
<Button x:Name="btnSelectGames" Content="Click here to select your games"
HorizontalAlignment="Left" Margin="110,50,0,0"
VerticalAlignment="Top" Height="40" Width="240"
Click="{Binding SelectCommand}"/>
<Button x:Name="btnChooseGame" Content=""
HorizontalAlignment="Left" Margin="110,150,0,0"
VerticalAlignment="Top" Width="240" Height="40"
Click="{Binding ChooseCommand}" IsEnabled="True"/>
<ProgressRing HorizontalAlignment="Left" Margin="200,100,0,0"
VerticalAlignment="Top" RenderTransformOrigin="1.05,1.983"
Height="45" Width="45" IsActive="True" Visibility="{Binding }"/>
<Image x:Name="imgFileIcon" HorizontalAlignment="Left"
Height="64" Margin="110,224,0,0"
VerticalAlignment="Top" Width="64" />
<TextBlock x:Name="lblFileName" HorizontalAlignment="Left"
Margin="179,224,0,0" TextWrapping="Wrap"
Text="" VerticalAlignment="Top" Width="171" Height="64"/>
</Grid>
</UserControl>
它出现以下错误:
The name "GameRouletteDesignViewModel" does not exist in the namespace "using:GameRoulette.DesignViewModels".
我重建了该项目,然后它为我的3个.xaml文件中的每个文件提供了以下错误:GameRouletteView, App.xaml
和MainPage.xaml
:
'GameRouletteView' does not contain a definition for 'InitializeComponent' and no extension method 'InitializeComponent' accepting a first argument of type 'GameRouletteView' could be found (are you missing a using directive or an assembly reference?)
此外,首次打开项目时,我收到了Intellisense错误:
[Failure] Could not find file 'C:\Users\username\Source\Repos\GameRoulette\GameRoulette\GameRoulette\obj\ARM\Debug\MainPage.g.i.cs'.
[Failure] Could not find file 'C:\Users\username\Source\Repos\GameRoulette\GameRoulette\GameRoulette\obj\ARM\Debug\Views\GameRouletteView.g.i.cs'.
[Failure] Could not find file 'C:\Users\username\Source\Repos\GameRoulette\GameRoulette\GameRoulette\obj\ARM\Debug\App.g.i.cs'.
我排除的事情:
我已经搜索了这个错误,但我找不到任何我尚未尝试过的东西。
我还注意到我的NuGet软件包丢失了,我的软件包管理器控制台不再识别NuGet。我也收到了这个错误:
Microsoft.NETCore.Portable.Compatibility 1.0.0 provides a compile-time reference assembly for mscorlib on UAP,Version=v10.0, but there is no run-time assembly compatible with win10.
我觉得所有这些问题都是相关的,但我无法弄清楚它有什么问题。如上所述,Google并没有真正提供太多帮助,它提供的功能并不起作用。
我使用Visual Studio 2015 Community Edition和Update 1.该项目可以在https://github.com/nzall/GameRoulette找到。
答案 0 :(得分:3)
我已经在这个问题上苦苦挣扎了几天,至少在我的情况下,我很确定它依赖于我在我的xaml代码中无意中引入的一些微妙的错误。或者,更好,不完全是一个错误,但是我们所针对的平台的xaml版本不支持这些错误。在这种情况下,xaml解析器失败,并且g.i.cs文件(包含由解析器生成的页面和app类的一部分,包括InitializeComponent方法)不会按预期生成。 为什么我相信?