Подтвердить что ты не робот

Кнопка изображения Windows Phone 7

Мне нужно создать кнопку изображения для моего приложения, такую ​​как стиль веб-ориентации. Я имею изображение 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> 

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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

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

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

Ответ 3

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

Это решение позволяет использовать изображение в качестве самой кнопки при сохранении полной верности кнопки, но без подкласса объекта, такого как ссылка 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}/>

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

Ответ 5

Элемент Кнопка может принимать большинство элементов управления как его содержимое (а не только текст), поэтому вам не нужна кнопка "изображение". Вместо этого вам просто нужно установить элемент управления Image внутри Кнопка так:

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

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

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

Ответ 6

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

Ответ 7

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

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

 <Image
            Source='blue02.png'
            Width='26'
            Height='26'
            Margin='5'
            MouseLeftButtonUp='Image_MouseLeftButtonUp' />