Débutant - confus au sujet de la liaison et des ressources en WPF

J'essaie d'apprendre à WPF, mais je trouve qu'il est très difficile de comprendre les liaisons, les "ressources" chose, et la création de l'objet.
Mon fond est en C++/MFC et C#-Winforms.

Mes questions:

  1. La plupart des exemples que je vois dans le code XAML (dans MSDN et dans deux autres WPF livres que j'ai lu) utilisation StaticResource dans l'expression de liaison. Ces liés en aucune façon à des membres statiques? Ou est-ce juste un nom trompeur? Lorsqu'il est fait référence à un objet en tant que StaticResource, lorsqu'il est instancié?

  2. Aussi loin que je peux voir StaticResources sont utilisés avec les "choses", défini dans la section "Ressources" de l'app/fenêtre/de contrôle etc.

    Maintenant, ces Ressources sections sont très confus pour moi.
    Qu'est-ce exactement sont-ils? De par mon expérience dans MFC ces ont été des icônes, des cordes, etc. Cependant, à en juger par tous les exemples que j'ai vu, dans WPF ceux-ci semblent être essentiellement un "dépotoir" pour
    a tous les types d'objet global définitions dans le balisage (styles, les modèles de données, etc)
    b tous les types d'objet global instanciations dans le balisage
    Suis-je la corriger? Cela me semble très salissant.

    Il porte essentiellement sur l'apprentissage de toutes sortes de semi-DSLs en XAML (pour la définition de styles, de définir des modèles de données, pour créer des objets, etc), et de les coller ensemble dans le même lieu.
    Je continue de penser à quelque chose comme l'édition du fichier de ressources (.rc) dans le MFC à la main. Au moins là, les articles étaient bien séparées et la syntaxe pour chaque ressource est relativement simple.

  3. De lier les deux questions précédentes: Quand j'définir une instance de l'objet dans la section des Ressources, et plus tard de référence à partir d'un StaticResource de liaison, quand est-il exactement instancié?
    MSDN dit (dans "Comment faire: Rendre les Données Disponibles pour la Liaison en XAML"):

une façon, vous pouvez faire l'objet
disponibles pour la liaison est de le définir
en tant que ressource

Cependant, ce n'est pas très clair. Que signifient-ils disponibles? Signifient-ils créés? Signifient-ils raccordés à la liaison sous-système? Et quand exactement est l'objet créé?
De jouer avec un exemple simple, j'ai vu que WPF semble pour créer cet objet pour moi quand il essaie de joindre la liaison. Et c'est encore plus confus.

EDIT:
Après la clarification par karmicpuppet ci-dessous, je suis encore confus quant à la façon dont cela est relié à la Liaison.
Supposons que j'ai dans mes ressources:

<local:Person x:Key="MyPerson" Name="Title"/> 

(où la Personne est une classe avec une propriété de Nom) puis dans la fenêtre, j'ai:

<TextBlock Text="{Binding Source={StaticResource MyPerson}, Path=Name}"/> 

1) Qu'est-ce que cela? Est-il passe par les mêmes étapes - la recherche de la ressource et ensuite l'appliquer à la propriété Text? Le MyPerson objet est créé au moment de la création de la Fenêtre, ou plus tard?
2) Dois-je utiliser le mécanisme de Liaison pour lier le Nom de la propriété? Je ne peux pas lier directement comme vous l'avez fait ci-dessus avec myBrush? Pourquoi je ne peux pas faire quelque chose comme cela?

<TextBlock Text="{StaticResource MyPerson, Path=Name}"/> 

Est-ce juste un manque de clairvoyance de la part du cadre? Je pense que je suis absent très grand ici, mais je n'arrive pas à comprendre ce que...

3) j'ai essayé d'utiliser DynamicResource, mais je suis très confus au sujet de chaque étape j'ai pris.
a) Ajout d'un DependencyObject avec une DependencyProperty au-dessus de ma classe de Fenêtre unique dans le code (est-ce DependencyObject nécessaire?)

public class SomeText : DependencyObject
{
    public string Header
    {
        get { return (string)GetValue(HeaderProperty); }
        set { SetValue(HeaderProperty, value); }
    }
    public static readonly DependencyProperty HeaderProperty =
        DependencyProperty.Register("Header", typeof(string), typeof(SomeText), new UIPropertyMetadata(0));
}

b) Ajout d'une instance de Windows.Ressources (est-ce nécessaire avec DynamicResource? MSDN semble dire que non, mais si je ne peux pas comprendre comment le faire la prochaine étape dans le code XAML)

c) j'ai essayé les deux:

Text="{Binding Source={DynamicResource HeaderText}, Path=Header}"

Qui m'a donné une exception, et

Text="{DynamicResource HeaderText}"

Mais je ne comprenais pas où mettre le chemin d'accès à la propriété d'en-Tête.

C'est ma 5ème ou alors tenter de bricoler avec WPF ces derniers temps, et chaque fois que je suis perplexe par cette apparemment simple des choses qui ne fonctionnent pas. J'ai lu 2 livres et j'ai vraiment essayer de comprendre les articles MSDN, cependant, elles sont d'aucun secours.

  • Attendez jusqu'à ce que vous vous trouvez dans le besoin d'un on-the-fly animation..
InformationsquelleAutor OrWhen | 2010-08-28