Array
(
)

Binding com Csharp

Riechelmann
   - 19 out 2015

Bom Dia
Tenho o XAML, onde se eu defino um resource lPessoa eu consigo fazer o Binding mas não sei como recuperar essa informação sem ser pelo TextBox, porém se criar a classe pessoa no Código como faço para fazer o Binding dinamicamente pelo XAML?
#Código

<Window x:Class="TesteBinding.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:TesteBinding"
        mc:Ignorable="d"
        Title="MainWindow" Height="150" Width="300">
    <Window.Resources>
        <local:Pessoa x:Key="lPessoa" Nome="Lucas" Idade="27"/>
    </Window.Resources>
    <Canvas>
        <Label Canvas.Top="10" Canvas.Left="10" >Nome</Label>
        <TextBox Name="txtNome" Width="200" Height="20" Canvas.Top="10" Canvas.Left="70" Text="{Binding Source={StaticResource lPessoa},Path=Nome,Mode=TwoWay}"/>
        <Label Canvas.Top="40" Canvas.Left="10" >Idade</Label>
        <TextBox Name="txtIdade" Width="200" Height="20" Canvas.Top="40" Canvas.Left="70" Text="{Binding Source={StaticResource lPessoa},Path=Idade,Mode=TwoWay}" />
        <Button Name="btnMsg" Width="100" Height="30" Content="Mensagem" Click="onClick" Canvas.Top="70" Canvas.Left="10" />
    </Canvas>
</Window>

#Código
public class Pessoa : INotifyPropertyChanged
    {
        private string _nome;
        private string _idade;

        public event PropertyChangedEventHandler PropertyChanged;

        public void RaisePropertyChanged(string prop)
        {
            if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(prop)); }
        }

        public string Nome
        {
            get { return _nome; }
            set
            {
                if (_nome != value)
                {
                    _nome = value;
                    RaisePropertyChanged("Nome");
                }
            }
        }

        public string Idade
        {
            get { return _idade; }
            set
            {
                if (_idade != value)
                {
                    _idade = value;
                    RaisePropertyChanged("Idade");
                }
            }
        }
    }

Riechelmann
   - 19 out 2015

Consegui alimentar o DataContext do Canvas pelo código

#Código

Pessoa pessoa = new Pessoa();
        public MainWindow()
        {
            InitializeComponent();
            
            pessoa.Nome = "Lucas";
            pessoa.Idade = "27";
            this.teste.DataContext = pessoa;
        }


Porém gostaria de saber como faz para alimentar o DataContext diretamente no código XAML

exemplo

#Código
<Canvas DataContext="{local:pessoa}">
   ....
</Canvas>