前言:
这个只是记录一下,自己偶尔碰到的一个问题。关于xaml文件与cs文件失去关联关系。
简介:
一般来说,当我们通过VS来添加一个Window或者UserControl时,VS会自动帮我们添加两个文件。
一个是XXX.xaml,另外一个就是对应的后台文件。XXX.xaml.cs。而且两个文件时关联在一起的,
如下图所示:
其实,两个文件的关联在逻辑上是由partial 来实现的,所以上图所示的只是一个VS提供的视觉上的关联。
x:Class="ContactView"
问题:
我遇到的情况是,将之前在另外一个地方写好的一个UserControl添加到现有项目时,两个文件没有关联起来。
前面已经说到了,我这里指的是视觉上的没有关联上。
客官请看图:
如图所示,两个文件相比上图,显得没有“关系”。虽然两个文件其实还是可以正常使用的,但是总觉得不专业。
所以,我就想要去调整一下,我记得在VS2010中,可以直接调整的。但是在VS2012中,找了半天也没有找到。
解决:
其实,关于项目的很多配置都是在csproj文件中存储的,所以我想到能不能修改这个文件来解决这个问题。
通过打开这个文件,发现确实有这么一个标签来解决这个的。
上代码:
<ItemGroup> <ApplicationDefinition Include="App.xaml"> <Generator>MSBuild:Compile</Generator> <SubType>Designer</SubType> </ApplicationDefinition> <Page Include="MainWindow.xaml"> <Generator>MSBuild:Compile</Generator> <SubType>Designer</SubType> </Page> <Page Include="Views\ContactView.xaml"> <Generator>MSBuild:Compile</Generator> <SubType>Designer</SubType> </Page> <Compile Include="App.xaml.cs"> <DependentUpon>App.xaml</DependentUpon> <SubType>Code</SubType> </Compile> <Compile Include="MainWindow.xaml.cs"> <DependentUpon>MainWindow.xaml</DependentUpon> <SubType>Code</SubType> </Compile>
<Compile Include="Views\ContactView.xaml.cs"/>
</ItemGroup>
从上面,可以看出来,只有我们的ContactView文件没有包含DepentUpon元素,
这个元素就是决定视觉上的依赖关系的。我们照着这个加上,试试看吧。
<Compile Include="Views\ContactView.xaml.cs"> <DependentUpon>ContactView.xaml</DependentUpon> <SubType>Code</SubType> </Compile>
解决!