0

我为 wp7 创建了一个网络浏览器应用程序。我在应用程序栏菜单项中添加了一些 6 个选项卡。但是现在我想要分别在用户控制页面中的这 6 个选项卡,如果我单击选项卡 2 或任何选项卡,它应该像现在一样工作。

主页.xaml

<Grid x:Name="LayoutRoot">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<TextBox x:Name="UrlTextBox"
     KeyDown="UrlTextBox_KeyDown" />
<Grid x:Name="BrowserHost"
  Grid.Row="1" />
</Grid>

<phone:PhoneApplicationPage.ApplicationBar>
<shell:ApplicationBar>
<shell:ApplicationBar.MenuItems>
    <shell:ApplicationBarMenuItem Text="1"
                                  Click="TabMenuItem_Click" />
    <shell:ApplicationBarMenuItem Text="2"
                                  Click="TabMenuItem_Click" />
    <shell:ApplicationBarMenuItem Text="3"
                                  Click="TabMenuItem_Click" />
    <shell:ApplicationBarMenuItem Text="4"
                                  Click="TabMenuItem_Click" />
</shell:ApplicationBar.MenuItems>
</shell:ApplicationBar>
</phone:PhoneApplicationPage.ApplicationBar>

MainPage.xaml.cs

public partial class MainPage : PhoneApplicationPage
{
private const int NumTabs = 4;

private int currentIndex;
private string[] urls = new string[NumTabs];
private WebBrowser[] browsers = new WebBrowser[NumTabs];

public MainPage()
{ 
InitializeComponent();
ShowTab(0);
}

private void ShowTab(int index)
{
this.currentIndex = index;
UrlTextBox.Text = this.urls[this.currentIndex] ?? "";
if (this.browsers[this.currentIndex] == null)
{
    WebBrowser browser = new WebBrowser();
    this.browsers[this.currentIndex] = browser;
    BrowserHost.Children.Add(browser);
}
for (int i = 0; i < NumTabs; i++)
{
    if (this.browsers[i] != null)
    {
        this.browsers[i].Visibility = i == this.currentIndex ? Visibility.Visible : Visibility.Collapsed;
    }
}
}

private void UrlTextBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
    Uri url;
    if (Uri.TryCreate(UrlTextBox.Text, UriKind.Absolute, out url))
    {
        this.urls[this.currentIndex] = UrlTextBox.Text;
        this.browsers[this.currentIndex].Navigate(url);
    }
    else
        MessageBox.Show("Invalid url");
}
}

private void TabMenuItem_Click(object sender, EventArgs e)
{
int index = Int32.Parse(((ApplicationBarMenuItem)sender).Text) - 1;
ShowTab(index);
}
}

就像下面的浏览器一样。 在此处输入图像描述

谁能帮我这个?谢谢你的帮助!

4

2 回答 2

0

如果你仍然想创建一个用户控件,那就没有那么难了。在您的项目文件夹中添加新项目作为 Windows Phone 用户控件。在创建的新页面中,根据需要键入 UI 的 xaml 代码(这类似于任何其他 xaml 页面)及其在后面代码中的行为。

在您的主页中添加以下代码行
<phone:PhoneApplicationPage xmlns:views="clr-namespace:ProjectName.NameSpace">

然后使用此语句 <views:controlName> </views:controlName> 引用您的控件

我希望这有帮助。需要帮助请叫我

于 2012-08-08T06:44:32.123 回答
0

使用数据透视页面,并将您的点击事件处理函数(类似于您的 TabMenuItem_Click)关联到数据透视标题上的点击手势。

或者根据您的问题简单地使用标题为 1、2、3、4 的数据透视页面。在与事件 pivot_selectionchanged 关联的事件处理程序中,检查枢轴索引并相应地完成您的工作。

我希望这是您正在寻找的,否则请进一步解释您的问题

于 2012-08-06T11:03:25.943 回答