图像可在Windows Phone 7中单击

时间:2014-02-21 07:44:48

标签: c# windows-phone-7

我正在为Windows Phone 7开发一个应用程序。在我的一个页面中,我有一个包含其他几个图像的图像,即包含一些其他小图像的较大图像。现在我想让这些小图片可以点击以导航到另一个页面。所以我所做的是我在所有这些小图像中添加了一个按钮,并将按钮的边框粗细指定为0.我认为应该有更好的选择来做到这一点。我的xaml是:

<Image Grid.RowSpan="2" Source="Image/device.png" Height="754" HorizontalAlignment="Left" Margin="0,15,0,0" Name="image1" Stretch="Fill" VerticalAlignment="Top" Width="480" />
    <Button Content="" Grid.RowSpan="2" BorderThickness="0" Height="244" HorizontalAlignment="Left" Margin="23,34,0,0" Name="About" VerticalAlignment="Top" Width="439" Click="About_Click" />
    <Button Content="" Grid.Row="1" BorderThickness="0" Height="137" HorizontalAlignment="Left" Margin="34,285,0,0" Name="City" VerticalAlignment="Top" Width="187" Click="City_Click" />
    <Button Content="" Grid.Row="1" BorderThickness="0" Height="137" HorizontalAlignment="Left" Margin="261,285,0,0" Name="Cuisine" VerticalAlignment="Top" Width="189" Click="Cuisine_Click" />
    <Button Content="" Grid.Row="1" BorderThickness="0" Height="141" HorizontalAlignment="Left" Margin="36,456,0,0" Name="Map" VerticalAlignment="Top" Width="186" Click="Map_Click" />
    <Button Content="" Grid.Row="1" BorderThickness="0" Height="141" HorizontalAlignment="Left" Margin="257,455,0,0" Name="Coupon" VerticalAlignment="Top" Width="199" Click="Coupon_Click" />
    <Button Content="" Grid.Row="1" BorderThickness="0" Height="70" HorizontalAlignment="Left" Margin="13,650,0,0" Name="Home" VerticalAlignment="Top" Width="67" Click="Home_Click" />
    <Button Content="" Grid.Row="1" BorderThickness="0" Height="71" HorizontalAlignment="Right" Margin="0,647,309,0" Name="Map1" VerticalAlignment="Top" Width="64" Click="Map1_Click" />
    <Button Content="" Grid.Row="1" BorderThickness="0" Height="74" HorizontalAlignment="Left" Margin="197,649,0,0" Name="City1" VerticalAlignment="Top" Width="70" Click="City1_Click" />
    <Button Content="" Grid.Row="1" BorderThickness="0" Height="80" HorizontalAlignment="Left" Margin="296,646,0,0" Name="Cuisine1" VerticalAlignment="Top" Width="73" Click="Cuisine1_Click" />
    <Button Content="" Grid.Row="1" BorderThickness="0" Height="76" HorizontalAlignment="Left" Margin="396,646,0,0" Name="Share" VerticalAlignment="Top" Width="79" Click="Share_Click" />

请建议一些更好的方法来做到这一点

3 个答案:

答案 0 :(得分:2)

您可以为图片添加点按手柄,例如点按=“Image_Tap”并处理它。

private void Image_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
// your code
}

答案 1 :(得分:1)

实际上,您应该问过几个问题,但无论如何:

  

我有一张图片的图片视图,无论何时需要制作   可点击

我建议将一个大图像剪切成几个较小的图像。然后你只需将它们全部添加到网格中并制作其中一些,它们应该是活动的,可点击的

  

由于默认应用程序栏仅包含4个,我需要5个   所以我做的是我在那个区域创建了5个按钮。现在我想要   所有页面中都有5个按钮,无需编写代码   所有页面中的按钮。我想从一个页面调用这些按钮   并在整个应用程序中显示它。怎么做?

这很容易做到。您应该创建一个applicationBar管理器类。 它看起来像这样:

public class ApplicationBarCreator
{
    #region Constructor

    /// <summary>
    /// Constructor for native page
    /// </summary>
    /// <param name="page">Current page</param>
    public ApplicationBarCreator(PhoneApplicationPage page)
    {
        page.ApplicationBar = new ApplicationBar();
        page.ApplicationBar.IsMenuEnabled = true;
        page.ApplicationBar.IsVisible = true;

        ApplicationBarMenuItem appBarButtonSettings = new ApplicationBarMenuItem(LocalizedResources.Resources.Get("menusettings"));
        appBarButtonSettings.Click += delegate(object sender, EventArgs e)
        {
            appBarButtonSettings_Click(sender, e, page);
        };
        ApplicationBarMenuItem appBarButtonUpdate = new ApplicationBarMenuItem(LocalizedResources.Resources.Get("commonrefresh"));
        appBarButtonUpdate.Click += delegate(object sender, EventArgs e)
        {
            appBarButtonUpdate_Click(sender, e, page);
        };
        ApplicationBarMenuItem appBarButtonAbout = new ApplicationBarMenuItem(LocalizedResources.Resources.Get("menuhelp"));
        appBarButtonAbout.Click += delegate(object sender, EventArgs e)
        {
            appBarButtonAbout_Click(sender, e, page);
        };

        page.ApplicationBar.MenuItems.Add(appBarButtonSettings);
        page.ApplicationBar.MenuItems.Add(appBarButtonUpdate);
        page.ApplicationBar.MenuItems.Add(appBarButtonAbout);
        }

        private void appBarButtonSettings_Click(object sender, EventArgs e, PhoneApplicationPage page)
        {
              // doing something
        }

        // and two more down

然后在你的每一页中,你想要添加这个应用程序栏,你只需在页面构造函数中添加一行:

apbCreator = new ApplicationBarCreator(this);

顺便说一句,您可能不需要将页面对象传输到此类并使用委托。 我已经这样做了,因为我需要使用NavigationService,它需要知道当前页面。如果您不需要它,只需使用简单的事件。

答案 2 :(得分:0)

您可以检查图像的事件optios。你可以使用名为image_tap的事件处理程序,就像上面提到的Chris Shao一样。

你也可以使用这些方法

双击:就像双击一样,但用手指代替鼠标     * DragStarted,DragDelta和DragCompleted:可以一起使用的三个事件,可以在Windows Phone上轻松实现拖放     *轻拂:将手指放下,快速移动,然后将其重新拾起。     *保持:将手指放下并将其放在一个地方一段时间     * PinchStarted,PinchDelta和PinchCompleted:三个事件可以一起用来判断用户是否正在捏东西,通常是放大或缩小     *点击:就像点击一样,但用手指代替鼠标