J'utilise le modèle MV-VM dans WPF et j'ai un pinceau d'arrière-plan que je vais utiliser assez souvent et je voudrais le déplacer vers un ResourceDictionary partagé.Activer la liaison de données dans les ressources WPF partagées à l'intérieur d'un ResourceDictionary
Le seul problème est que le pinceau utilise une couleur qu'il obtient via la liaison de données à son contexte hébergé.
Y at-il de toute façon que je puisse déplacer le pinceau dans un ResourceDictionary tout en lui trouvant la valeur dont il a besoin?
Le pinceau:
<RadialGradientBrush>
<RadialGradientBrush.RelativeTransform>
<TransformGroup>
<ScaleTransform CenterX="0.5"
CenterY="0.5"
ScaleX="2.3"
ScaleY="2.3" />
<TranslateTransform X="-0.3"
Y="-0.3" />
</TransformGroup>
</RadialGradientBrush.RelativeTransform>
<GradientStop Color="{Binding Path=BackdropColor}"
Offset="1.2" />
<GradientStop Color="#FFFFFFFF"
Offset="-0.1" />
</RadialGradientBrush>
Après réusinage vers un ResourceDictionary et en ajoutant une touche, je l'ai appelé en tant que tel:
<StackPanel Grid.Row="0"
Margin="0,0,0,0"
Orientation="Horizontal"
Background="{DynamicResource BackdropRadGradBrush}">
Mais cela a donné lieu à cette sortie dans le débogueur :
System.Windows.Data Erreur: 2: Impossible de trouver la règle FrameworkElement ou FrameworkContentElement pour l'élément cible. BindingExpression: Path = BackdropColor; DataItem = null; l'élément cible est 'GradientStop' (HashCode = 16001149); La propriété target est 'Color' (type 'Color')
Cela semble fonctionner si j'utilise un appel DynamicResource ... puis spécifié dans la propriété StackPanels.Resources peut-être? Je vais tester et voir ce que je peux trouver. Il n'est jamais trop tard pour répondre à une question sur SO! – Nidonocu