C# 可在Windows Phone 7中单击图像

C# 可在Windows Phone 7中单击图像,c#,windows-phone-7,C#,Windows Phone 7,我正在为WindowsPhone7开发一个应用程序。在我的一个页面中,我有一个包含其他几个图像的图像,也就是说,一个较大的图像包含其他一些较小的图像。现在我想让这些小图片可以点击,以便导航到另一个页面。我所做的是在所有这些小图片中添加了一个按钮,并将按钮的边框厚度指定为0。我认为应该有更好的选择。我的xaml是: <Image Grid.RowSpan="2" Source="Image/device.png" Height="754" HorizontalAlignment="Left"

我正在为WindowsPhone7开发一个应用程序。在我的一个页面中,我有一个包含其他几个图像的图像,也就是说,一个较大的图像包含其他一些较小的图像。现在我想让这些小图片可以点击,以便导航到另一个页面。我所做的是在所有这些小图片中添加了一个按钮,并将按钮的边框厚度指定为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" />


请建议一些更好的方法来执行此操作

您可以将点击手柄添加到图像中,如Tap=“Image\u Tap”并对其进行处理

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

您可以将点击手柄添加到图像中,如Tap=“Image\u Tap”并对其进行处理

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

您可以将点击手柄添加到图像中,如Tap=“Image\u Tap”并对其进行处理

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

您可以将点击手柄添加到图像中,如Tap=“Image\u Tap”并对其进行处理

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

您可以签入图像的事件选项。您可以像上面提到的Chris Shao一样使用名为image_tap的事件处理程序

您也可以使用这些方法

双击:就像双击一样,但用手指代替鼠标 *DragStarted、DragDelta和DragCompleted:三个事件可一起用于在Windows Phone上实现轻松拖放 *轻弹:放下你的手指,快速移动,然后把它捡起来。 *按住:将手指放在一个地方按住一段时间 *PinchStarted、PinchDelta和PinchCompleted:三个事件可以一起用来判断用户是否在捏东西,通常用于放大或缩小
*点击:就像点击一样,但是用手指而不是鼠标,你可以检查图像的事件选项。您可以像上面提到的Chris Shao一样使用名为image_tap的事件处理程序

您也可以使用这些方法

双击:就像双击一样,但用手指代替鼠标 *DragStarted、DragDelta和DragCompleted:三个事件可一起用于在Windows Phone上实现轻松拖放 *轻弹:放下你的手指,快速移动,然后把它捡起来。 *按住:将手指放在一个地方按住一段时间 *PinchStarted、PinchDelta和PinchCompleted:三个事件可以一起用来判断用户是否在捏东西,通常用于放大或缩小
*点击:就像点击一样,但是用手指而不是鼠标,你可以检查图像的事件选项。您可以像上面提到的Chris Shao一样使用名为image_tap的事件处理程序

您也可以使用这些方法

双击:就像双击一样,但用手指代替鼠标 *DragStarted、DragDelta和DragCompleted:三个事件可一起用于在Windows Phone上实现轻松拖放 *轻弹:放下你的手指,快速移动,然后把它捡起来。 *按住:将手指放在一个地方按住一段时间 *PinchStarted、PinchDelta和PinchCompleted:三个事件可以一起用来判断用户是否在捏东西,通常用于放大或缩小
*点击:就像点击一样,但是用手指而不是鼠标,你可以检查图像的事件选项。您可以像上面提到的Chris Shao一样使用名为image_tap的事件处理程序

您也可以使用这些方法

双击:就像双击一样,但用手指代替鼠标 *DragStarted、DragDelta和DragCompleted:三个事件可一起用于在Windows Phone上实现轻松拖放 *轻弹:放下你的手指,快速移动,然后把它捡起来。 *按住:将手指放在一个地方按住一段时间 *PinchStarted、PinchDelta和PinchCompleted:三个事件可以一起用来判断用户是否在捏东西,通常用于放大或缩小
*点击:就像点击一样,但用手指而不是鼠标实际上,你应该问几个问题,但无论如何:

我有一个图像视图的图像和任何必要的地方,使它 可点击

我建议把一个大的图像剪成几个小的。然后你们只需将它们全部添加到网格中,并使其中一些成为活动的、可点击的

因为默认应用程序栏只包含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
顺便说一下,您可能不需要将页面对象传输到此类并使用委托。
我这样做是因为我需要使用NavigationService,它需要知道当前页面。如果您不需要它,只需使用简单事件即可。

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

我有一个图像视图的图像和任何必要的地方,使它 可点击

我建议把一个大的图像剪成几个小的。然后你们只需将它们全部添加到网格中,并使其中一些成为活动的、可点击的

因为默认应用程序栏只包含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
顺便说一句,您可能不需要转pa