Comment lier avec de la dynamique des ressources et de spécifier un chemin d'accès
Je veux lier à une ressource (DynamicResource) et les propriétés d'accès à cette ressource, mais est-il une façon de le faire?
(Je veux visualiser les valeurs par défaut du constructeur dans l'éditeur xaml dans visual studio. Ceux qui ne peuvent pas être vus lors de la référence à un objet par le biais de DataContext, ni par le biais d'un ajout d'une propriété sur ma classe de Fenêtre...)
Pas de travail xaml: (travaux en compositeur, mais pas au moment de l'exécution...)
<Window ... >
<Window.Resources>
<local:MyClass x:Key="myResource" />
</Window.Resources>
<StackPanel>
<Button Content="{Binding Source={DynamicResource myResource} Path=Property1}" />
<Button Content="{Binding Source={DynamicResource myResource} Path=Property2}" />
</StackPanel>
</Window>
avec la classe (qui a probablement besoin d'implémenter INotifyPropertyChanged):
public class MyClass
{
public MyClass()
{
this.Property1 = "Ok";
this.Property2 = "Cancel";
}
public string Property1 { get; set; }
public string Property2 { get; set; }
}
OriginalL'auteur erikH | 2010-08-30
Vous devez vous connecter pour publier un commentaire.
C'est parce que la
DynamicResource
extension de balisage peut être utilisé uniquement sur une propriété de dépendance, parce qu'il faudra le mettre à jour si des modifications de ressources. EtBinding.Source
n'est pas une propriété de dépendance...Comme une solution de contournement, vous pouvez définir la
DataContext
de la touche avec laDynamicResource
:N'oubliez pas d'accepter la réponse 😉
Quelqu'un peut-il expliquer pourquoi cela va seulement ont tendance à travailler après le parent windows
Loaded
événement a été déclenché? Même si, en utilisant le code derrière api etcTryFindResource()
il sera de retour attendus de la ressource?OriginalL'auteur Thomas Levesque
Abuser du DataContext d'un autre objet semble être la méthode la plus simple solution de contournement.
Dans le cas où vous avez encore besoin de le DataContext de votre contrôle (MVVM n'importe qui?), vous pouvez également créer un invisible helper FrameworkElement ailleurs:
et, plus tard, reportez-vous à elle en utilisant le nom de la liaison:
Votre concepteur va tout à fait susceptibles de se plaindre de ne pas être en mesure de résoudre "Couleur" dans le contexte de "l'objet", mais il fonctionnera correctement lors de l'exécution.
OriginalL'auteur Patrick Kursawe