是否有任何方法可以操作WPF中按钮的背景图像

本文关键字:按钮 背景 图像 WPF 操作 任何 方法 是否 | 更新日期: 2023-09-27 18:19:43

我需要给出背景图像的大小,因为我作为背景图像添加到按钮的图标图像(32x32)对按钮来说太大了,看起来很糟糕,XAML代码是这样的:

<Window x:Class="apple.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow"> 
        <Grid>
        <Image Source="C:'Users'Fernando'Desktop'Eye-Mouse'apple'apple'img0.jpg" Stretch="Fill"/>
            <UniformGrid Name="gridx" Rows="6">
            </UniformGrid>
    </Grid>
</Window>

在uniformGrid中,我添加了一些按钮,比如:

ImageBrush ib = new ImageBrush();
System.Windows.Controls.Button newBtn = new Button();
FileToImageIconConverter some = new FileToImageIconConverter(link[n]);
ImageSource imgSource = some.Icon;
ib.ImageSource = imgSource;
newBtn.Background = ib;
gridx.Children.Add(newBtn);

谢谢你的帮助。

是否有任何方法可以操作WPF中按钮的背景图像

您可能需要使用Xaml&数据绑定以填充统一网格。通过这种方式,可以随心所欲地在"表达式混合"中设置按钮的样式。

<Window x:Class="apple.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow"> 
        <Grid>
        <Image Source="C:'Users'Fernando'Desktop'Eye-Mouse'apple'apple'img0.jpg" Stretch="Fill"/>
        <!-- YourLinkList is the list that provides the link[n] in your example -->
        <ItemsControl ItemsSource="{Binding Path=YourLinkList}">
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <UniformGrid Rows="6"/>
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Button>
                        <Button.Background>
                            <ImageBrush>
                                <ImageBrush.ImageSource>
                                    <!-- {Binding .} means that the UriSource is bound to the item in the link list -->
                                    <BitmapImage UriSource="{Binding .}" DecodePixelWidth="32" DecodePixelHeight="32"/>
                                </ImageBrush.ImageSource>
                            </ImageBrush>
                        </Button.Background>
                    </Button>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
    </ItemsControl> 
    </Grid>
</Window>

您也可以尝试将图像设置为按钮的内容,而不是将其用作背景。也许那样会更好看。