Привязать экземпляр класса к элементам управления - PullRequest
0 голосов
/ 18 февраля 2012

Я изучаю привязку данных WPF, используя это руководство .

Вот мой XAML:

Window x:Class="DataBinding_01.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"        
        Title="MainWindow" Height="350" Width="525">

    <Window.Resources>
        <local:Person x:Key="PersonDataSource" Name="Joe"/>
    </Window.Resources>

    <DockPanel Height="Auto" Name="panel" Width="Auto" LastChildFill="True">
        <TextBox DockPanel.Dock="Top" Height="23" Name="txtName" Width="Auto" />
        <Button Content="Button" Name="button1" Width="Auto" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Click="button1_Click" />
    </DockPanel>
</Window>

Вот мой код:

 public partial class MainWindow : Window
    {
        Person myPerson = null;
        public MainWindow()
        {
            InitializeComponent();
            myPerson = this.Resources["PersonDataSource"] as Person;
            myPerson.NameProperty = "hi, again!";
        }    
    }

    public class Person 
    {

        Person()
        {
            NameProperty = "hi";
        }

        Person(String _name)
        {
            NameProperty = _name;
        }

        private String name = "";
        public String NameProperty
        {
            get { return name; }
            set 
            { 
                name = value;
            }
        }  

    }

Когда я строю решение, я получаю ошибку:

Ошибка 1 '' local 'является необъявленным префиксом. Строка 7, позиция 10. ' XML это не действительный. C: \ Users \ Admin \ Desktop \ DataBinding_01 \ DataBinding_01 \ MainWindow.xaml 7 10 DataBinding_01

Почему и как я могу это исправить?

Ответы [ 2 ]

5 голосов
/ 18 февраля 2012

Вам необходимо указать пространство имен local в XAML , чтобы оно указывало на пространство имен класса Person:

Если класс Person в пространстве имен DataBinding_01:

<Window x:Class="DataBinding_01.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:DataBinding_01"        
        Title="MainWindow" Height="350" Width="525">

В вашем примере статьи:

<Window
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:local="clr-namespace:BindingSample">
2 голосов
/ 18 февраля 2012

Вам необходимо определить local, где myNameSpace - это ваше пространство имен в разделе окна. Обычно название проекта.

xmlns:local="clr-namespace:myNameSpace"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...