Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > WPF, UWP, WinRT, XAML
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.07.2011, 02:52   #1
Mixim
Форумчанин
 
Регистрация: 29.10.2009
Сообщений: 259
По умолчанию Размещение иконки в Button WPF

Как можно заметить, я решил потихоньку переходит с построения приложений WinForms на приложения WPF. Почти заканчиваю текущий WPF-проект и решил сделать некоторые красивости на форме, а именно: разместить на каждой кнопке(Button) соответствующую её иконку. Посмотрел свойства кнопок(Background, BorderBrush, OpacityMask), поочередно присваивал им значение некоторой иконки, но это не совсем что нужно: Background в принципе делает все почти так, как надо, но он заполняет всю площадь кнопки изображением, а это не совсем то, что надо; BorderBrush - это совсем не то, что нужно; OpacityMask - тоже не то.
Полез на MSDN, перерыл там несколько десятков страниц и нашел следующие:1, 2, 3. Воспользовался XAML-кодом приведенным в третьей ссылке, но:
1)иконка получается почему-то бледноватая;
2)для того, чтобы ориентировать её к левому краю(как в обычных Button'ах WinForms), необходимо первое число в свойстве Margin сделать отрицательным;
3)границы вставленного изображения в Button явно прочерчены;
4)невозможно задать текстовую строчку в поле Content("Свойство Content установлено больше одного раза").
Привожу свой XAML-код:
Код:
        <Button Height="69" HorizontalAlignment="Left" Margin="106,69,0,0" Name="AddDatabase" VerticalAlignment="Top" Width="336" Opacity="0.5" >
            <Image Source="/WpfApplication1;component/Images/AddDatabase.png" Margin="-170,0,0,0" HorizontalAlignment="Left"
                   />
        </Button>
Как можно справиться с вышеописанными проблемами и существует ли вообще в WPF-компонентах аналог свойства Image?
Из всех классических книг, посвященных программированию, ненавижу всего одну - русский перевод книги Роберта Седжвика-"Фундаментальные алгоритмы C++". Предпочитаю читать её в оригинале.
Mixim вне форума Ответить с цитированием
Старый 21.07.2011, 08:19   #2
zabej
Пользователь
 
Регистрация: 17.05.2011
Сообщений: 13
По умолчанию

Код HTML:
<Button Height="69" HorizontalAlignment="Left" Margin="106,69,0,0"      Name="AddDatabase" VerticalAlignment="Top" Width="336" Opacity="0.5" >
   <StackPanel Orientation="Horizontal">
     <Image/>
     <TextBlock Text="Content"/>
    </StackPanel>
</Button>
Иконка бледная т.к. Opacity="0.5" у Button'a

Последний раз редактировалось zabej; 21.07.2011 в 09:34.
zabej вне форума Ответить с цитированием
Старый 21.07.2011, 08:39   #3
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Советую использовать для дизайна UI - Expression Blend (не ниже версии 4)
BOBAH13 вне форума Ответить с цитированием
Старый 22.07.2011, 09:52   #4
Mixim
Форумчанин
 
Регистрация: 29.10.2009
Сообщений: 259
Лампочка

Спасибо за помощь и советы, но решил задачу с помощью применения следующего XAML-кода:
Код:
<Button Height="40" HorizontalAlignment="Left" Margin="10,0,0,30" Name="Add_button" VerticalAlignment="Bottom" Width="Auto" Background="#21000000" FontFamily="Monotype Corsiva" FontSize="20" FontStyle="Normal" Padding="0,2,1,1" Foreground="#FF009E00" FontWeight="Bold" Cursor="Hand" Click="Add_button_Click">
                                    <Button.ContentTemplate>
                                        <DataTemplate>
                                            <StackPanel Orientation="Horizontal">
                                                <Image Source="/MyApplication;component/Images/AnyImage.png" Margin="0, 0,0,0"/>
                                                <TextBlock Width="Auto"  Text="Добавить" VerticalAlignment="Center"/>
                                            </StackPanel>
                                        </DataTemplate>
                                    </Button.ContentTemplate> />
                                </Button>
При его использовании все отлично работает и отображается. Для поиска примера данного кода пришлось полазить по некоторому количеству зарубежных сайтов и несколько раз наткнуться на не совсем "грамотный код"
Только перед тем как использовать вышеприведенный код, необходимо добавить применяемую картинку в ресурсы проекта(в данном случае это картинка имеет имя "AnyImage.png")
Из всех классических книг, посвященных программированию, ненавижу всего одну - русский перевод книги Роберта Седжвика-"Фундаментальные алгоритмы C++". Предпочитаю читать её в оригинале.

Последний раз редактировалось Mixim; 22.07.2011 в 09:57.
Mixim вне форума Ответить с цитированием
Старый 23.07.2011, 02:04   #5
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

Можно так:
Код:
		<Button Height="42" HorizontalAlignment="Left" Margin="133,0,0,0" Name="Add_button" VerticalAlignment="Bottom" Width="Auto" Background="#21000000" FontFamily="Monotype Corsiva" 
				FontSize="20" FontStyle="Normal" Padding="0,2,1,1" Foreground="#FF009E00" FontWeight="Bold" Cursor="Hand" 
				Content="Годзилоид">
			<Button.ContentTemplate>
				<DataTemplate>
					<StackPanel Orientation="Horizontal">
						<Image Source="/Wpf_ListBoxPhotos;component/QuestionMark.png" Margin="0,0,0,0"/>
						<TextBlock Text="{Binding}" VerticalAlignment="Center"/>
					</StackPanel>
				</DataTemplate>
			</Button.ContentTemplate> 
		</Button>

Последний раз редактировалось Casper-SC; 23.07.2011 в 02:07.
Casper-SC вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[C# + WPF] Отлов нажатий клавиш, хуки, горячие клавиши в проекте WPF Casper-SC WPF, UWP, WinRT, XAML 3 03.03.2017 15:00
Размещение формы. Сергей58rus Помощь студентам 2 13.05.2011 14:30
Размещение программы misher Свободное общение 4 10.09.2010 17:29
класс Screen в WPF. Есть ли такой? [?] Не добавлять же сборку Forms в WPF Casper-SC Общие вопросы .NET 2 30.07.2010 15:10