簡體   English   中英

在WPF中使用XAML設置Window.Datacontext

[英]Set Window.Datacontext with XAML in WPF

我目前正在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中看到能夠做到這一點的價值

您的代碼似乎在這里可以正常工作: 在此處輸入圖片說明

您粘貼的錯誤消息(...在命名空間中不存在...)是生成時錯誤的結果。 您在模型中使用的“聯系人”類可能有錯誤? 在任何情況下都可以。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM