0

wp7用のWebブラウザアプリを作成しました。その中で、アプリケーションバーのメニュー項目に6つのタブを追加しました。しかし、今はユーザーコントロールページにこれらの6つのタブを個別に配置したいので、タブ2または任意のタブをクリックすると、現在のように機能するはずです。

MainPage.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 に答える