Как я могу показать различные фоны в нескольких кнопках в WPF - PullRequest
0 голосов
/ 08 января 2012

Мне нужно показать несколько кнопок, но каждая из них должна иметь другой фон, чем другие кнопки, я работал над этим, но мне нужно было отображать только несколько кнопок, но с одним и тем же фоном. Вот 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" Height="370" Width="525">
    <Grid>
        <Image Source="C:\Users\Public\Pictures\Sample Pictures\Koala.jpg" Stretch="Fill"/>
        <DockPanel Name="dock">
            <UniformGrid Name="gridx" DockPanel.Dock="Top" Rows="3" Columns="3" Height="334"> 
            </UniformGrid>
        </DockPanel>
    </Grid>
</Window>

Также вот код C #:

namespace apple
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            masterGUI();
        }

    public void masterGUI()
    {
        ImageBrush ib = new ImageBrush();
        IconImage[] ico = null;
        Bitmap[] img = null;
        string[] list = null;
        string[] link = Directory.GetFiles(@"C:\ProgramData\Microsoft\Windows\Start Menu\Programs", "*.lnk", SearchOption.AllDirectories);
        list = new string[link.Length];
        ico = new Icon[link.Length];
        img = new Bitmap[link.Length];
        for (int n = 0; n < link.Length; n++)
        {
            System.Windows.Controls.Button newBtn = new Button();
            list[n] = System.IO.Path.GetFileNameWithoutExtension(link[n]);
            FileToImageIconConverter some = new FileToImageIconConverter(link[n]);
            ImageSource imgSource = some.Icon;
            ib.ImageSource = imgSource;
            newBtn.Background = ib;
            newBtn.Content = list[n];
            gridx.Children.Add(newBtn);
        }  
    }
}

}

Есть идеи? благодарю вас.

1 Ответ

1 голос
/ 08 января 2012

ImageBrush необходимо создать в цикле for отдельно для каждого элемента.В противном случае вы получите один и тот же фон для каждого элемента.

Также вы подходите к этому «неправильному» пути, в WPF вы должны использовать привязку данных и шаблоны данных для такого рода вещей вместо обязательного зацикливания.

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