Affichage de l'image dans le contenu de l'animateur dans le bouton
J'ai un bouton avec un style qui affiche une image à l'intérieur. Je voudrais être en mesure de préciser l'image qu'il utilise à l'aide de la Content
de propriété sur le bouton (ou autre).
Comment pouvez accomplir cela sans réellement l'imbrication d'une image directement dans le bouton.
<BitmapImage x:Key="closeImage" UriSource="close.png" />
Je pensais que je pouvais peut-être spécifier le nom de fichier d'image comme ceci:
<Button Content="{{StaticResource closeImage}" x:Name="closeButton" Click="closeButton_Click" Style="{DynamicResource WindowToolboxButton}"/>
Style:
<Style x:Key="WindowToolboxButton" TargetType="{x:Type Button}">
<Setter Property="FocusVisualStyle" Value="{StaticResource ButtonFocusVisual}"/>
<Setter Property="Background" Value="{StaticResource ButtonNormalBackgroundFill}"/>
<Setter Property="BorderBrush" Value="{StaticResource ButtonBorder}"/>
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid x:Name="grid" Height="15" Width="15">
<Border x:Name="border" CornerRadius="2,2,2,2" BorderBrush="#FFBBCDD2" BorderThickness="1" Opacity="0" Margin="0">
<Border.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF82A3AC" Offset="1"/>
<GradientStop Color="#7FCDD9DC"/>
</LinearGradientBrush>
</Border.Background>
</Border>
<Image x:Name="image" Source="close.png" Stretch="None" VerticalAlignment="Center" HorizontalAlignment="Center" >
</Image>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Vous devez vous connecter pour publier un commentaire.
Je suis assez sûr que je suis absent le problème de votre question, mais le code suivant fonctionne pour moi:
Plus, j'ai repéré une erreur dans votre code:
devrait être:
Je n'arrive pas à comprendre ce que votre style est en train de faire. Pourquoi avez-vous le Contenu de la Propriété définie sur un StaticResource si vous voulez spécifier l'image en passant par le style?
Edit:
Bon, j'ai essayé votre style et ça marche aussi pour moi.
L'image est affichée. Cependant, je ne peux pas voir votre frontière en raison de l'opacité-prop être mis à 0.
Le contenu qui est donné directement sur le bouton est remplacé par le style.
Peut-être qu'il y a qqch de mal avec votre image? Avez-vous jeu de construction-propriété à Ressources?
Je pense que la bonne façon de le faire est
Alors vous pouvez l'utiliser comme
<ImageButton ImageSource={StaticResource ...}/>
Si vous essayez d'ajouter une image définie dans une ressource à un contrôle de contenu, il ne fonctionnera que la première fois. La deuxième fois que vous essayez d'ajouter la même image dans un autre contrôle de contenu, elle échouera avec "visuel Spécifié est déjà un enfant d'un autre visuel..."
En fait, c'est vraiment facile. Utiliser le Style que vous avez déjà et ajoutez ce qui suit à l '"image"
Alors (tant que vous avez l'image en tant que Contenu/Copier si plus récent) vous pouvez définir le Contenu avec l'image souhaitée de l'Uri.
remarque: remplacer "[projectname] " avec le nom de votre projet et les '...' avec chemin d'accès à l'image
Remplacer
Avec
Où votre ancêtre type de bouton qui est appelée dans le code xaml, et là, vous pouvez Définir le Contenu de ce bouton pour point de l'image.
Exemple: