我目前正在使用C#涉足WPF 我所拥有的老师知道如何使用Windows窗体,但对WPF并不多。我可以看到,使用GUI有点不同,但看起来很稳固。
在遵循一个小型速成课程时,我试图通过使用XAML添加一个类作为MainWindow的datacontext,但我似乎无法正确执行。我在这里看过很多关于它的帖子,但没有一件事情和我所遇到的一样。这是我的XAML
<Window x:Class="WPFTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WPFTest"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Window.DataContext>
<local:AddressBookViewModel />
</Window.DataContext>
<Grid x:Name="WPFTest">
<Button x:Name="btnNewContact" Content="Create a New Contact" HorizontalAlignment="Left" Margin="10,273,0,0" VerticalAlignment="Top" Width="209"/>
<Label x:Name="lblName" Content="Name:" HorizontalAlignment="Left" Margin="259,129,0,0" VerticalAlignment="Top"/>
<Label x:Name="lblEmail" Content="E-Mail:" HorizontalAlignment="Left" Margin="259,160,0,0" VerticalAlignment="Top"/>
<Label x:Name="lblPhone" Content="Phone:" HorizontalAlignment="Left" Margin="259,191,0,0" VerticalAlignment="Top"/>
<TextBox x:Name="txtName" HorizontalAlignment="Left" Height="23" Margin="327,133,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/>
<TextBox x:Name="txtEmail" HorizontalAlignment="Left" Height="23" Margin="327,164,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/>
<TextBox x:Name="txtPhone" HorizontalAlignment="Left" Height="23" Margin="327,195,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/>
<ListBox x:Name="lbxContacts" HorizontalAlignment="Left" Height="204" Margin="10,53,0,0" VerticalAlignment="Top" Width="209"/>
</Grid>
我希望用作ViewModel的类:
namespace WPFTest
{
public class AddressBookViewModel
{
public AddressBookViewModel()
{
}
protected List<Contact> contacts = new List<Contact>();
protected Contact selectedContact = null;
public List<Contact> Contacts
{
get
{
return contacts;
}
set
{
contacts = value;
}
}
public Contact SelectedContact
{
get
{
return selectedContact;
}
set
{
selectedContact = value;
}
}
}
}
然而,这只是给我一个错误:
The name "AddressBookViewModel" does not exist in the namespace "clr-namespace:WPFTest".
我根本不理解出了什么问题。在我看来,AddressBookViewModel确实存在于这个命名空间中,但Visual Studio显然不同意。
有人可以向我解释这个问题吗?
我知道我可以在后面的代码中绑定Datacontext,但是,我可以看到能够在XAML中执行它的价值