Como funciona a ligação de dados?

Eu estou no processo agora de tentar adicionar dados em uma caixa de listagem. Se você olhar para o meu XAML, esta é minha caixa de listagem que eu construí:

<ListBox 
            Height="517" 
            HorizontalAlignment="Left" 
            Margin="12,84,0,0" 
            Name="searchList" 
            VerticalAlignment="Top" 
            Width="438" 
            SelectionChanged="SearchList_SelectedEvent">

            <!-- What each listbox item will look like -->
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel>
                        <TextBlock Text="{Binding firstName}" FontSize="28" />
                        <TextBlock Text="{Binding lastName}" FontSize="28" />
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>

</ListBox>

E na minha classe .css que está associada à tela que contém o listBox:

public Search()
    {
        InitializeComponent();

        //The variables that I want to render in the list         
        string firstName = "John";
        string lastName = "Smith";
    }  

Então, minha pergunta é: como funciona exatamente a vinculação de dados? Você pode ver que no XAML eu tentei ligar as variáveis, mas não tenho idéia se isso vai funcionar ou se eu estou fazendo isso corretamente?

Para começar, como o XAML sabe onde encontrar essas variáveis?

questionAnswers(3)

yourAnswerToTheQuestion