1

Template10 を使用した UWP があります。アイテムを含むグリッドが必要OnClickで、アイテムのイベントで別のページを開きたい。いつもの

var item = (Invitation)e.ClickedItem;
this.Frame.Navigate(typeof(MainPage), item.Id);

動作しないようです。これどうやってするの?

4

1 に答える 1

1

あるページから別のページにパラメーターを渡す方法を示す簡単なサンプルを作成しました。簡単なデモンストレーションになるため、MVVM アーキテクチャは使用しません。

これが私のメインページです:

<Page
    x:Class="App1.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:local="using:App1"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    x:Name="mainWindow"
    mc:Ignorable="d">

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <ListView
            Name="lvDummyData"
            IsItemClickEnabled="True"
            ItemClick="lvDummyData_ItemClick"
            ItemsSource="{Binding ElementName=mainWindow, Path=DummyData}">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding}" />
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </Grid>
</Page>

ご覧のとおり、ここには特別なものは何もありません。クリックが有効なリストビューのみ。

コードビハインドは次のようになります。

public ObservableCollection<string> DummyData { get; set; }

public MainPage()
{

    List<string> dummyData = new List<string>();

    dummyData.Add("test item 1");
    dummyData.Add("test item 2");
    dummyData.Add("test item 3");
    dummyData.Add("test item 4");
    dummyData.Add("test item 5");
    dummyData.Add("test item 6");

    DummyData = new ObservableCollection<string>(dummyData);

    this.InitializeComponent();

}

private void lvDummyData_ItemClick(object sender, ItemClickEventArgs e)
{
    var selectedData = e.ClickedItem;
    this.Frame.Navigate(typeof(SidePage), selectedData);
}

ここでは、ダミー データを入力している監視可能なコレクションがあります。それとは別に、リストビューからアイテムクリックイベントがあり、パラメーターをSideViewページに渡します。

私の SideView ページは次のようになります。

<Page
    x:Class="App1.SidePage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:App1"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    x:Name="sidePage"
    mc:Ignorable="d">

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Name="txtResultDisplay" />
    </Grid>
</Page>

そして、これは私のコードビハインドがどのように見えるかです:

public SidePage()
{
    this.InitializeComponent();
}

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    string selectedDummyData = e.Parameter as string;
    if (selectedDummyData != null)
    {
        txtResultDisplay.Text = selectedDummyData;
    }

    base.OnNavigatedTo(e);
}

ここに、OnNavigatedTo渡されたパラメーターを取得できるイベントがあります。これはあなたに欠けている部分ですので、注意してください。これが問題の解決に役立つことを願っています。

于 2016-06-22T20:10:06.943 に答える