Windows Phone 7 Кнопка Изображение - PullRequest
16 голосов
/ 29 ноября 2010

Мне нужно создать кнопку изображения для моего приложения, как веб-ориентированный стиль.У меня есть изображение размером 20x20 пикселей, и я хочу кнопку изображения с таким же размером изображения.

Я попытался установить это внутри моего xaml, но это не работает:

<Button Grid.Row="0" Margin="0" Padding="0" Click="AddtoFavorite_Click" Width="20" Height="20"  VerticalAlignment="Top" HorizontalAlignment="Right">
   <Button.Content>
      <Image Source="/MyNamespace;component/images/star_yellow.png" Margin="0" Width="20" Height="20" />
   </Button.Content>
</Button>

Чтоне так?


РЕШЕНИЕ

Я нашел лучшее решение:

<Image Source="/MyNamespace;component/images/star_yellow.png" ManipulationStarted="Image_ManipulationStarted" Width="20" Height="20"></Image> 

Спасибо всем!

Ответы [ 7 ]

20 голосов
/ 29 ноября 2010

Я не вижу особых ошибок в вашем коде, но сейчас у меня нет инструментов для его проверки и выяснения причин его сбоя.

Однако вы можете создать VisualBrush с вашим изображением и использовать его в качестве фона для вашей кнопки:

<Button>
    <Button.Background>
        <ImageBrush ImageSource="xyz.png"/>
    </Button.Background>
</Button>

Большинство фонов имеют тип Brush, поэтому вы можете использовать SolidColorBrush, LinearGradientBrush, ImageBrush и т. Д. Вы не ограничены цветами.

4 голосов
/ 06 февраля 2012

Это старый, но я подумал, что предложу то, что я думал, было лучшим решением здесь.Некоторые из этих решений требуют, чтобы вы заменили кнопку изображением, или фон - кистью изображения.Это нормально, за исключением того, что оно окружает изображение обычным стилем кнопки, черным или белым квадратом (в зависимости от вашей темы).

Это решение позволяет использовать изображение в качестве самой кнопки, сохраняя при этом полную точностькнопка, но без необходимости создавать подкласс для объекта, такого как ссылка SilverGeek.

Сначала создайте новый стиль (либо в вашем App.xaml, либо в ресурсах вашей страницы)

<Style x:Key="ImageButtonStyle" TargetType="Button">
<Setter Property="Template">
    <Setter.Value>
        <ControlTemplate TargetType="Button">
            <Grid>
                <Image x:Name="StartButtonImage" Source="/Images/YourImageFile.png"/>
                <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
                                    VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
                                    Content=""/>
            </Grid>
        </ControlTemplate>
    </Setter.Value>
</Setter>

Теперь просто создайте кнопку в любом месте, используя этот стиль:

<Button Style={StaticResource ImageButtonStyle}/>

И добавьте события щелчка или что угодно еще.Кнопка примет на себя весь стиль изображения.

4 голосов
/ 02 марта 2011

Я думаю, что лучшим решением является следующее:

<Button ...>
    <Button.Template>
         <ControlTemplate>
              <Image .... />
         </ControlTemplate>
     </Button.Template>
</Button>

Использование начатой ​​манипуляции приведет к слегка нестандартному поведению. На большинстве кнопок, если вы нажмете на нее, но затем перетянете, нажатие кнопки не сработает. Однако, если вы используете ManipulationStarted, он немедленно сработает.

Лучший способ управлять этими соображениями времени проектирования - использовать Expression Blend. В blend вы можете щелкнуть правой кнопкой мыши по кнопке и отредактировать шаблон с помощью инструментов дизайна, что делает знание того, как редактировать xaml, менее важно Это действительно стоит усилий, чтобы научиться использовать Blend.

3 голосов
/ 14 января 2011

Может быть, вам будет интересна эта статья:

http://silvergeek.net/2011/01/14/imagebutton-control-for-win-phone-7/

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

Элемент управления Button может принимать большинство элементов управления в качестве своего содержимого (не только текст), поэтому вам не нужна «кнопка изображения» - вместо этого вам просто нужно поместить элемент управления Image внутри кнопки.например:

<Button>
    <Image Source="http://www.richmondwiki.org/images/search-button.png"></Image>
</Button>

Этот подход (в отличие от использования ImageBrush для фона кнопки) означает, что вам не нужно беспокоиться или жестко задавать размеры изображения / кнопки - WP7 справится с этимдля тебя.

Рекомендуется использовать предоставленный элемент управления Button вместо подключения к событиям манипуляции, чтобы вам не приходилось беспокоиться о таких вещах, как наличие соответствующих полей для сенсорных целей и т. Д.

0 голосов
/ 30 ноября 2010

Вам даже не нужно использовать кнопку.

Вы можете перехватить событие MouseLeftButtonUp в элементе управления Image.

 <Image
            Source='blue02.png'
            Width='26'
            Height='26'
            Margin='5'
            MouseLeftButtonUp='Image_MouseLeftButtonUp' />
0 голосов
/ 29 ноября 2010

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

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