есть ли способ манипулировать фоновым изображением кнопки в WPF? - PullRequest
1 голос
/ 09 января 2012

Мне нужно указать размер фонового изображения, потому что изображение значка (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>

И к равномерной сетке я добавляю кнопки, например:

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);

Спасибо за любую помощь.

1 Ответ

2 голосов
/ 09 января 2012

Возможно, вы захотите использовать Xaml & Databinding для заполнения единой сетки.Таким образом, вы можете стилизовать кнопку в Expression Blend так, как вам нравится.

<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>

Вы также можете попытаться установить изображение в качестве содержимого кнопки, а не использовать его в качестве фона.Может быть, это будет выглядеть лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...