这是我的MainWindowViewModel.vb
Public Class MainWindowViewModel
Inherits ViewModelBase
Public Sub New()
End Sub
Private _test As String = "Success"
Public Property Test() As String
Get
Return _test
End Get
Set(ByVal value As String)
_test = value
RaisePropertyChanged()
End Set
End Property
End Class
这是我的MainWindow.xaml
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Koala"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<local:MainWindowViewModel x:Key="MainWindowViewModelDataSource" d:IsDataSource="True"/>
</Window.Resources>
<Grid DataContext="{Binding Source={StaticResource MainWindowViewModelDataSource}}">
<TextBox HorizontalAlignment="Left" Height="23" Margin="156,103,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120" Text="{Binding Test}"/>
</Grid>
</Window>
这是我得到的错误:
Error 1 The name "MainWindowViewModel" does not exist in the namespace "clr-namespace:Koala". \\psf\Dropbox\Programming\Windows\Koala\Koala\MainWindow.xaml 7 3 Koala
我可以在Window标记中添加对名称空间Koala的引用而不会出现问题。当我输入<local:
时,我可以选择使用MainWindowViewModel
标记。每当我添加x:Key
时,就会发生错误。 (重新)构建不起作用,重启VS2012不起作用。我搜索了几十个类似的问题,但我无法找到解决方案。
我尝试通过Blend和VS2012添加引用,但它们都不起作用。奇怪的是,我能够启动调试模式并在屏幕上看到我的表单。此外,Success
中还会显示TextBox
。
答案 0 :(得分:0)
将您的MainWindowViewModel类包装在
中Namespace ViewModels
Public Class MainWindowViewModel
Inherits ViewModelBase
...
End Class
End Namespace
然后在窗口中添加一个新的命名空间:
xmlns:vm="clr-namespace:Koala.ViewModels"
在资源声明中使用vm前缀而不是local。
答案 1 :(得分:0)
我遇到了类似的问题,两个不同的dll中存在两个UserControl。我通过向xaml添加汇编引用解决了这个问题,如下所示
<Window x:Class="View.MainWindowView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:v1="clr-namespace:View1;assembly=MyAssemblyName1"
xmlns:v2="clr-namespace:View2;assembly=MyAssemblyName2"
Title="MainWindow" Height="350" Width="525">
<Grid>
<v1:UserControl1/>
<v2:UserControl2/>
</Grid>
</Window>
我的项目是一个.Net4.5项目,其中包含两个包含两个UserControl和一个主WPF应用程序的dll
请注意添加
assembly=MyAssemblyName1