2010-07-26 5 views
2

Je travaille sur une carte interactive. J'utilise Silverlight 4 au sein VisualStudio 2010. Mon problème est que je ne peux pas attribuer une géométrie Button propriété Clip:Impossible d'affecter la géométrie à la propriété de clip Button

code:

bouton1.Clip = (PathGeometry)Forme.Data; 
//forme is a class that inherits from Path 

quand je lance ma demande je reçois un ArgumentException:

la valeur ne figure pas dans la fourchette prévue

+0

y at-il une solution ??? : S – Rahma

Répondre

1

Votre Path appelé "Forme" a sa géométrie définie en utilisant le Path Mini-Language droite?

Ce type de géométrie ne peut pas être partagé par plusieurs éléments.

La solution de contournement est de stocker les données de chemin sous la forme d'une chaîne dans un ResourceDictionary accessible à la fois à votre élément "Forme" et "bouton1" puis de l'affecter en utilisant StaticResource. Quelque chose comme: -

<StackPanel> 
    <StackPanel.Resources> 
    <sys:String x:Key="MyPath">M 10,100 C 10,300 300,-200 300,100</sys:String> 
    </StackPanel.Resources> 
    <Button x:Name="btn" Content="Button" Height="150" Clip="{StaticResource MyPath}" /> 
    <Path Data="{StaticResource MyPath}" Stroke="Black" StrokeThickness="2" /> 
</StackPanel> 

L'inconvénient douloureux est que le concepteur VS2010 ne saisit pas et ne s'applique donc pas le chemin. Vous devez exécuter l'application pour voir visuellement les résultats.

+0

Merci pour la réponse :) Bien que j'ai besoin de créer un chemin dynamiquement, alors, je vais essayer de le faire dans le code derrière (C#). – Rahma

+0

OK ... J'ai changé le bouton par chemin et l'événement MouseLeftButtonDown, ça marche :) – Rahma

0

J'ai changé le bouton avec Path et MouseLeftButtonDown événement, ça fonctionne :)

+0

@StefanP L'auteur a répondu à sa propre question. – afuzzyllama

Questions connexes